[Dcmlib] Big Endian suite

Mathieu Malaterre mathieu.malaterre at kitware.com
Tue Jan 11 23:36:54 CET 2005


>> Le morceau de code coupable c'est:
>>
>> if( BitsAllocated == 16 )
>>   {
>>      uint16_t *im16 = (uint16_t*)Raw;
>>      switch( SwapCode )
>>      {
>>         case 0:
>>         case 12:
>>         case 1234:
>>            break;
>>         case 21:
>>         case 3412:
>>         case 2143:
>>         case 4321:
>>            for( i = 0; i < RawSize / 2; i++ )
>>            {
>>               im16[i]= (im16[i] >> 8) | (im16[i] << 8 );
>>            }
>>            break;
>>         default:
>>            gdcmVerboseMacro("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:

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





More information about the Dcmlib mailing list