J'essaie de lire un fichier binaire avec la classe BinaryReader, et j'ai besoin de le lire en blocs de UInt32, puis de faire un peu de décalage, etc. afterwords. Mais, pour une raison quelconque, l'ordre des bits est inversé lorsque j'utilise la méthode ReadUInt32. Si je ai par exemple un fichier où les quatre premiers octets ressemble à ceci en hexadécimal, 0x12345678
, ils finissent comme ça après avoir été lus par ReadUInt32: 0x78563412
.Pourquoi BinaryReader.ReadUInt32() inverse le modèle binaire?
Si j'utilise la méthode readBytes (4), je reçois le tableau attendu:
[0x00000000] 0x12 byte
[0x00000001] 0x34 byte
[0x00000002] 0x56 byte
[0x00000003] 0x78 byte
Pourquoi est-ce? Est-ce juste la façon .net représente des uints en mémoire? Est-ce la même chose sur les différentes plates-formes (je cours 64 bits Windows 7, .net 3.5 SP1)?
Pouvez-vous étonner notre curiosité en nous disant comment vous l'avez fixé? :) –
Bien sûr :) En réalité, peu importe la façon dont l'ordre des octets est, tant qu'il est cohérent sur les platfroms (x64, x86), je peux toujours extraire les bits dont j'ai besoin, je dois juste changer mon bit déplacement. Pour autant que je puisse le voir, uint est généralement stocké comme little-endian, et pas seulement comme uint construit par ReadUInt32, ce qui rend tout plus facile. –