Próbuję odczytać plik binarny za pomocą klasy BinaryReader, a ja potrzebuję go odczytać jako bloki UInt32, a następnie trochę przesunąć itd.Dlaczego BinaryReader.ReadUInt32() odwraca wzór bitowy?
Jednak z jakiegoś powodu kolejność bitów jest odwracana, gdy używam metody ReadUInt32.
Jeśli na przykład masz plik gdzie pierwsze cztery bajty wygląda to w hex, 0x12345678
, kończy się tak po odczytywane przez ReadUInt32: 0x78563412
.
Jeśli używam ReadBytes metoda (4), pojawia się oczekiwany tablicy:
[0x00000000] 0x12 byte
[0x00000001] 0x34 byte
[0x00000002] 0x56 byte
[0x00000003] 0x78 byte
dlaczego tak jest? Czy to po prostu sposób .net reprezentuje uints w pamięci? Czy jest tak samo na różnych platformach (mam 64-bitowy system Windows 7, .net 3.5 sp1)?
Czy możesz stłumić naszą ciekawość, mówiąc nam, jak to naprawiłeś? :) –
Oczywiście :) W rzeczywistości nie ma znaczenia, w jaki sposób kolejność bajtów jest tak długa, jak długo jest spójna na platfromach (x64, x86), wciąż mogę wydobyć potrzebne fragmenty, po prostu muszę zmienić mój bit przeniesienie. O ile widzę, uint jest ogólnie przechowywany jako little-endian, a nie tylko uint build ReadUInt32, dzięki czemu wszystko jest łatwiejsze. –