[Dcmlib] write_binary
Jean-Pierre ROUX
jean-pierre.roux at creatis.insa-lyon.fr
Fri Oct 29 14:17:25 CEST 2004
>Salut,
>Le probleme c'est que je ne comprends pas le SwapCode, qu'est que
>c'est que Bad big endian et Bad little endian. Est-ce que lors de
>l'ecriture il faut ecrire ce genre de bad byte ?
C'est une antiquité due au fait que nous voulons continuer à pouvoir
lire les fichiers ACR-NEMA...
En ACR-NEMA, la norme était (déja) : little-endian pour tout le monde.
Ca n'etait tellement pas respecté qu'en DICOM, ils ont rajouté un
champ 'Transfert Syntax'.
Et les constructeurs qui tentaient de respecter la norme (little
endian) le faisaient 'par soft' et, parfois se livraient à des truc
'curieux' pour les 'int 32'.
Les termes 'Bad Bid Endian' et 'Bad Little Endian' avaient été pompés
par moi sur les pages de Sebastien Barré, qui les avait pompés sur
celles de David Clunie.
On peut donc les considérer comme communément admis.
Quant à leurs 'valeurs', elles se voulaient mnémoniques de ce qu'il y
a avait à opérer comme permutations d'octets sur un int32 qui aurait
été écrit sur disque de manière erronnée.
C'était déduit de la 'longueur sur la quelle est codée la longueur du
premier groupe, et qui est *forcément* 4, codée sur 4 octets.
On examine, octet par octet la valeur lue sur disque, et, selon que l'on a :
0000 0004
0004 0000
0400 0000
0000 0400
on saura quelle permutation doit etre faite pour obtenir en mémoire
la meme chose que
uint32_t i=4;
Lors de l'écriture, on ecrit du 'good' big endian ou du 'good' little endian
(selon le processeur sur lequel on travaille).
Jusqu'a présent, pour éviter de perdre (encore un peu plus) de temps,
en permuttant les octets, on écrivait sur disque dans le même ordre
que ce qu'il y a en mémoirez, et on ajustait la 'Transfert Syntax'
pour que ca soit cohérent.
JPRx
>
>-----------------------
>
>A propos de SwapCode, est-ce qu'il y a un interet a garder 0, 4321,
>3412, 2143 ... ca me fais penser a des nombres magiques. Je
>comprends que c'est explicit mais un enum:
>
>enum {
>BigEndian // 0
>LittleEndian // 4321
>BadBigEndian // 3412
>BadLittleEndian // 2143
>}
>
>est aussi explicit, non ?
>
>Merci pour ceux qui m'auront lu jusqu'ici :)
>Mathieu
>
>
>_______________________________________________
>Dcmlib mailing list
>Dcmlib at creatis.insa-lyon.fr
>http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
Jean-Pierre ROUX
UMR CNRS 5515-CREATIS
Laboratoire de Radiologie Experimentale
Hopital Cardiologique
28 Avenue du Doyen LEPINE
B.P. Lyon-Montchat
69394 Lyon Cedex 03
Tel : (+33) 04 72 35 74 12
Fax : (+33) 04 72 68 49 16
URL : http://www.creatis.univ-lyon1.fr
e-mail : jpr at univ-lyon1.fr
More information about the Dcmlib
mailing list