[Dcmlib] Big Endian suite: comprends toujours pas

Mathieu Malaterre mathieu.malaterre at kitware.com
Wed Jan 12 16:23:45 CET 2005


> 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)


Est-ce que c'est valide pour DicomV3 ?
Si oui alors edit gdcmDocument.cxx et montre moi comment SwapCode peut 
prendre des valeurs autres que: 1234 / 4321. Voila l'extrait:

       if ( net2host )
       {
          SwapCode = 4321;
          gdcmVerboseMacro( "HostByteOrder != NetworkByteOrder");
       }
       else
       {
          SwapCode = 1234;
          gdcmVerboseMacro( "HostByteOrder = NetworkByteOrder");
       }

       // Position the file position indicator at first tag (i.e.
       // after the file preamble and the "DICM" string).
       Fp->seekg(0, std::ios::beg);
       Fp->seekg ( 132L, std::ios::beg);
       return true;
       ^^^^^^^^^^^^   -> ca veut dire qu'on a finis. qu'il n'y a plus 
d'autre cas de figure.

Il n'y a bien que deux possibilites pour DicomV3. Et ca ne suffit pas 
pour les 4 cas de figures !

Merci
Mathieu





More information about the Dcmlib mailing list