Ich versuche, eine binäre Datei mit der BinaryReader-Klasse zu lesen, und ich muss es als Blöcke von UInt32 lesen, und dann ein bisschen verschieben, usw. nachher.Warum kehrt BinaryReader.ReadUInt32() das Bitmuster um?
Aber aus irgendeinem Grund ist Bit Reihenfolge umgekehrt, wenn ich die ReadUInt32-Methode verwenden.
Wenn ich zum Beispiel eine Datei habe, in der die ersten vier Bytes in hex, 0x12345678
, aussehen, enden sie so, nachdem sie von ReadUInt32 gelesen wurden: 0x78563412
.
Wenn ich das Readbytes verwenden (4) Verfahren, erhalten ich die erwartete Array:
[0x00000000] 0x12 byte
[0x00000001] 0x34 byte
[0x00000002] 0x56 byte
[0x00000003] 0x78 byte
Warum ist das? Ist es nur die Art und Weise, wie .net die gespeicherten Daten darstellt? Ist es das gleiche über die verschiedenen Plattformen (ich 64bit Windows 7, .net 3.5 SP1 laufen)?
Können Sie unsere Neugier unterdrücken, indem Sie uns sagen, wie Sie es behoben haben? :) –
Natürlich :) In der Realität spielt es keine Rolle, wie die Byte-Reihenfolge ist, solange sie über platfroms (x64, x86) konsistent ist, kann ich immer noch die Bits extrahieren, die ich brauche, ich muss nur mein Bit ändern Verschiebung. Soweit ich sehen kann, wird uint im Allgemeinen als Little-Endian gespeichert, nicht nur als Uuit-Build von ReadUInt32, so dass alles einfacher wird. –