我想用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