我正在尝试使用BinaryReader类读取二进制文件,并且需要按UInt32块进行读取,然后进行一些位移等操作。
但是,当我使用ReadUInt32方法时,某些原因导致位顺序被颠倒。
例如,如果我有一个文件,其中前四个字节在十六进制中如下:0x12345678
,则在被ReadUInt32读取后,它们会变成这样:0x78563412
。
如果我使用ReadBytes(4)方法,则会得到预期的数组:
[0x00000000] 0x12 byte
[0x00000001] 0x34 byte
[0x00000002] 0x56 byte
[0x00000003] 0x78 byte
为什么会这样呢?是因为 .net 在内存中表示 uints 的方式吗?在不同的平台上是否都是一样的(我正在运行 64 位的 Windows 7,.net 3.5 sp1)?