| 5 | 1/1 | 返回列表 |
| 查看: 1019 | 回復(fù): 3 | ||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | ||
[求助]
為什么用CFile讀出來的字節(jié)順序是反的
|
||
|
我想讀一個文件,文件最開始是一個帶符號的4字節(jié)整形常量,每個字節(jié)如下: 0x88 10001000 0x1b 00011011 0x03 00000011 0x6f 01101111 也就是這4個字節(jié)合在一塊組成一個為: 0x881b036f 的有符號整數(shù) 這個值應(yīng)該為 -2011495569。 下面是讀這個值的簡單代碼,讀出來發(fā)現(xiàn)字節(jié)順序好像是反的,怎么回事? CFile file(lpszPathName, CFile::modeRead|CFile::typeBinary); LONG *pbuf = new LONG[1]; file.Read(pbuf, 4); 查看 pbuf 指向的值是 0x6f031b88,和我原先的值剛好反了,這里面有什么講究嗎? 需要怎樣才能調(diào)過來呢? |
木蟲 (著名寫手)

木蟲 (著名寫手)
|
jjdg說的即是,確實(shí)是高位和低位字節(jié)的原因。 我測試了一下,用c++把int類型的數(shù)字1寫進(jìn)了一個二進(jìn)制文件里面,里面的內(nèi)容(使用xxd -b)是: 00000001 00000000 00000000 00000000 低位到高位是由左到右排的。 我不在linux下面寫程序,所以不方便測試MFC函數(shù)的程序。 或許也有其他方案,不過把輸入文件里面的高低位順序做個調(diào)整,是最直觀的辦法吧。。。 |

金蟲 (小有名氣)
|
在計(jì)算機(jī)中多字節(jié)數(shù)據(jù)類型在存儲區(qū)內(nèi)有一個字節(jié)排序問題.Intel 32位處理器采用little endian即小端字節(jié)排序,具體為:最低有效字節(jié)放在存儲器字節(jié)地址較低的單元,最高有效地址放在存儲器字節(jié)地址較高的單元. 而有些處理器如SUN SPARC采用Big Endian即高端字節(jié)排序,具體為:最低有效字節(jié)放在存儲器字節(jié)地址較高的單元,最高有效地址放在存儲器字節(jié)地址較低的單元. 從你的結(jié)果描述可以看出,你在讀一個4字節(jié)的整形量,pbuf指向了4字節(jié)存儲區(qū)的最低字節(jié)位置,你用的機(jī)器cpu是Intel 或x86兼容的。因此讀出的次序就如同你描述的那樣。 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 343求調(diào)劑 +4 | 愛羈絆 2026-03-29 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 321求調(diào)劑 +7 | 璞玉~~ 2026-03-25 | 8/400 |
|
|
[考研] 322求調(diào)劑 +7 | 宋明欣 2026-03-27 | 7/350 |
|
|
[考研] 295材料工程專碩求調(diào)劑 +7 | 1428151015 2026-03-27 | 7/350 |
|
|
[考研] 食品工程專碩一志愿中海洋309求調(diào)劑 +4 | 小張zxy張 2026-03-26 | 8/400 |
|
|
[考研] 346求調(diào)劑 一志愿070303有機(jī)化學(xué) +3 | 蘿卜燉青菜 2026-03-28 | 3/150 |
|
|
[考研] 藥學(xué)105500求調(diào)劑 +3 | Ssun。。 2026-03-28 | 3/150 |
|
|
[考研] 0856,材料與化工321分求調(diào)劑 +12 | 大饞小子 2026-03-27 | 13/650 |
|
|
[考研] 085405 考的11408求各位老師帶走 +3 | Qiu學(xué)ing 2026-03-28 | 3/150 |
|
|
[材料工程] 一志愿C9材料與化工專業(yè)總分300求調(diào)劑 +8 | 曼111 2026-03-24 | 9/450 |
|
|
[考研] 272求調(diào)劑 +7 | 腳滑的守法公民 2026-03-27 | 7/350 |
|
|
[考研] 考研化學(xué)308分求調(diào)劑 +10 | 你好明天你好 2026-03-23 | 12/600 |
|
|
[考研] 085600,材料與化工321分,求調(diào)劑 +9 | 大饞小子 2026-03-27 | 9/450 |
|
|
[考研] 316求調(diào)劑 +5 | Pigcasso 2026-03-24 | 5/250 |
|
|
[考研] 求調(diào)劑 +6 | 林之夕 2026-03-24 | 6/300 |
|
|
[考研] 336材料求調(diào)劑 +7 | 陳瀅瑩 2026-03-26 | 9/450 |
|
|
[考博] 26申博自薦 +3 | whh869393 2026-03-24 | 3/150 |
|
|
[基金申請] 請教下大家 2026年國家基金申請是雙盲審嗎? +3 | lishucheng1 2026-03-22 | 5/250 |
|
|
[考研] 361求調(diào)劑 +3 | Glack 2026-03-22 | 3/150 |
|
|
[考研] 070300,一志愿北航320求調(diào)劑 +3 | Jerry0216 2026-03-22 | 5/250 |
|