Tôi đang cố đọc một tệp nhị phân với lớp BinaryReader và tôi cần đọc nó dưới dạng các khối của UInt32 và sau đó thực hiện một số thay đổi bit sau.Tại sao BinaryReader.ReadUInt32() đảo ngược mẫu bit?
Nhưng, vì lý do nào đó, thứ tự bit được đảo ngược khi tôi sử dụng phương pháp ReadUInt32.
Nếu tôi ví dụ có tệp trong đó bốn byte đầu tiên trông giống như thế này trong hex, 0x12345678
, chúng kết thúc như sau sau khi được đọc bởi ReadUInt32: 0x78563412
.
Nếu tôi sử dụng ReadBytes (4) phương pháp, tôi nhận được mảng dự kiến:
[0x00000000] 0x12 byte
[0x00000001] 0x34 byte
[0x00000002] 0x56 byte
[0x00000003] 0x78 byte
Tại sao điều này? Nó chỉ là cách. Net đại diện cho uints trong bộ nhớ? Có giống nhau trên các nền tảng khác nhau không (tôi đang chạy Windows 7 64 bit, .net 3.5 sp1)?
Bạn có thể dập tắt sự tò mò của chúng tôi bằng cách cho chúng tôi biết cách bạn khắc phục sự cố không? :) –
Tất nhiên :) Trong thực tế nó không quan trọng theo cách thứ tự byte, miễn là nó nhất quán trên platfroms (x64, x86), tôi vẫn có thể trích xuất các bit tôi cần, tôi chỉ cần thay đổi bit của tôi dịch chuyển. Theo như tôi có thể thấy, uint nói chung được lưu trữ như là một chút ít, không chỉ là uint xây dựng bởi ReadUInt32, để làm cho mọi thứ dễ dàng hơn. –