| 5 | 1/1 | 返回列表 |
| 查看: 1018 | 回復(fù): 3 | |||
| 當前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | |||
[求助]
為什么用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)過來呢? |
金蟲 (小有名氣)
|
在計算機中多字節(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é)位置,你用的機器cpu是Intel 或x86兼容的。因此讀出的次序就如同你描述的那樣。 |
木蟲 (著名寫手)
|
jjdg說的即是,確實是高位和低位字節(jié)的原因。 我測試了一下,用c++把int類型的數(shù)字1寫進了一個二進制文件里面,里面的內(nèi)容(使用xxd -b)是: 00000001 00000000 00000000 00000000 低位到高位是由左到右排的。 我不在linux下面寫程序,所以不方便測試MFC函數(shù)的程序。 或許也有其他方案,不過把輸入文件里面的高低位順序做個調(diào)整,是最直觀的辦法吧。。。 |

木蟲 (著名寫手)

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 081200-11408-276學碩求調(diào)劑 +6 | 崔wj 2026-03-26 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 070300化學354求調(diào)劑 +3 | 101次希望 2026-03-28 | 3/150 |
|
|
[考研] 295求調(diào)劑 +4 | wei-5 2026-03-26 | 4/200 |
|
|
[考研] 0703一志愿9,初試成績:338,四六級已過,有科研經(jīng)歷,求調(diào)劑! +4 | Zuhui0306 2026-03-25 | 4/200 |
|
|
[考研] 085600 286分 材料求調(diào)劑 +7 | 麻辣魷魚 2026-03-27 | 8/400 |
|
|
[考研] 張芳銘-中國農(nóng)業(yè)大學-環(huán)境工程專碩-298 +4 | 手機用戶 2026-03-26 | 4/200 |
|
|
[考研] 272求調(diào)劑 +7 | 腳滑的守法公民 2026-03-27 | 7/350 |
|
|
[考研] 266分求材料化工冶金礦業(yè)等專業(yè)的調(diào)劑 +4 | 哇呼哼呼哼 2026-03-26 | 4/200 |
|
|
[考研] 一志愿北京化工大學 070300 學碩 336分 求調(diào)劑 +9 | vv迷 2026-03-22 | 9/450 |
|
|
[考研] 一志愿吉大071010,316分求調(diào)劑 +3 | xgbiknn 2026-03-27 | 3/150 |
|
|
[考研] 一志愿陜師大生物學071000,298分,求調(diào)劑 +5 | SYA! 2026-03-23 | 5/250 |
|
|
[考研] 336材料求調(diào)劑 +7 | 陳瀅瑩 2026-03-26 | 9/450 |
|
|
[考研] 一志愿北化求調(diào)劑 +3 | Jsman 2026-03-22 | 3/150 |
|
|
[考研] 總分322求生物學/生化與分子/生物信息學相關(guān)調(diào)劑 +5 | 星沉uu 2026-03-26 | 6/300 |
|
|
[考研] 一志愿天津大學339材料與化工求調(diào)劑 +3 | 江往賣魚 2026-03-26 | 3/150 |
|
|
[考研] 086003食品工程求調(diào)劑 +6 | 淼淼111 2026-03-24 | 6/300 |
|
|
[考研] 上海電力大學材料防護與新材料重點實驗室招收調(diào)劑研究生(材料、化學、電化學,環(huán)境) +4 | 我愛學電池 2026-03-23 | 4/200 |
|
|
[考研] 300分,材料,求調(diào)劑,英一數(shù)二 +5 | 超贊的 2026-03-24 | 5/250 |
|
|
[考研] 一志愿重慶大學085700資源與環(huán)境,總分308求調(diào)劑 +7 | 墨墨漠 2026-03-23 | 8/400 |
|
|
[考研] 070300,一志愿北航320求調(diào)劑 +3 | Jerry0216 2026-03-22 | 5/250 |
|