[Dcmlib] Big Endian suite
Jean-Pierre ROUX
jean-pierre.roux at creatis.insa-lyon.fr
Wed Jan 12 09:10:54 CET 2005
At 17:36 -0500 11/01/05, Mathieu Malaterre wrote:
>>>Le morceau de code coupable c'est:
>>>
>>>if( BitsAllocated == 16 )
>>> {
>>> uint16_t *im16 = (uint16_t*)Raw;
>>> switch( SwapCode )
>>> {
[...]
>>>cmVerboseMacro("SwapCode value (16 bits) not allowed.");
>>> }
>>> }
>>>
>
>Je reitere ma question. Je ne comprends pas ce code. SwapCode
>designe le SwapCode du fichier ou du processeur ? Car il y a deux
>choses a faire:
Ni l'un ni l'autre!
Il indique le type de traitement qu'il faut appliquer a un ensemble
consecutif de 4 octets lus dans le fichier pour en faire un 'int32'
comprehensible par le processeur qui l'a lu.
Un fichier ecrit en 'BigEndian', lu sur MacOS aura un SwapCode=1234
(les octets sont dans l'ordre)
Ce même fichier, lu sur un PC 'intel inside' aura un SwapCode=2143
(il faudra permutter les octets)
Un fichier ecrit en 'LittleEndian', lu sur un PC 'intel inside' aura
un SwapCode=1234
(les octets sont dans l'ordre)
Ce même fichier, lu sur MacOS aura un SwapCode=2143
(il faudra permutter les octets)
On notera qu'en ce qui concerne les fichier 'True Dicom' Big Endian,
ce SwapCode sera modifié entre le goup 0002 et la suite du fichier ...
Ta proposition de le nommer comme suit
>enum {
> LITLLE_ENDIAN
> BIG_ENDIAN
> BAD_LITTLE_ENDIAN
> BAD_BIG_ENDIAN
}
donnerait une mauvaise indication sur ce qu'est le SwapCode.
Si on veut a tout prix les nommer, il faudrait faire qq chose comme :
enum {
ReadByteOrder1234
ReadByteOrder2143
... etc..
}
(ReadByteOrder = 'ordre lu des octets', et non pas 'Lire l'ordre des octets')
JP
>
>Si le fichier est little endian *ET* on est sur little endian alors
>il n'y a rien a faire. Mais si on est sur machine Big endian et le
>fichier est little endian alors oui il faut swapper...
>
>J'ai un peu du mal a comprendre comment *une* seule variable
>SwapCode peut jouer le role de deux variables non correlees...
>
>Merci
>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 creatis.univ-lyon1.fr
More information about the Dcmlib
mailing list