我想用BinaryReader类读取二进制文件,并且需要将它作为UInt32块读取,然后做一些位移等后缀。为什么BinaryReader.ReadUInt32()会颠倒位模式?
但是,由于某种原因,当我使用ReadUInt32方法时,位顺序反转。
如果我比如有一个文件,其中前四个字节看起来像这样十六进制,0x12345678
,他们最终就这样被ReadUInt32读取后:0x78563412
。
如果我使用的ReadBytes(4)方法中,我得到了预期的数组:
[0x00000000] 0x12 byte
[0x00000001] 0x34 byte
[0x00000002] 0x56 byte
[0x00000003] 0x78 byte
这是为什么?它只是方式.net代表内存中的提示?在不同的平台上(我正在运行64位Windows 7,.net 3.5 SP1)是否一样?
您是否可以通过告诉我们如何修复它来平息我们的好奇心? :) – 2009-05-23 02:06:12
当然:)实际上,字节顺序的方式并不重要,只要它跨平台(x64,x86)是一致的,我仍然可以提取我需要的位,我只需要更改我的位移动。据我所知,uint通常存储为little-endian,而不仅仅是ReadUInt32的uint构建,因此可以使一切变得更加简单。 – 2009-05-23 08:27:08