| 4 | 1/1 | 返回列表 |
| 查看: 1017 | 回復(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)過來呢? |
木蟲 (著名寫手)
|
jjdg說的即是,確實是高位和低位字節(jié)的原因。 我測試了一下,用c++把int類型的數(shù)字1寫進了一個二進制文件里面,里面的內(nèi)容(使用xxd -b)是: 00000001 00000000 00000000 00000000 低位到高位是由左到右排的。 我不在linux下面寫程序,所以不方便測試MFC函數(shù)的程序。 或許也有其他方案,不過把輸入文件里面的高低位順序做個調(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兼容的。因此讀出的次序就如同你描述的那樣。 |
| 4 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 各位老師好,我的一志愿為北京科技大學(xué)085601材料專碩 +7 | Koxui 2026-03-28 | 7/350 |
|
|---|---|---|---|---|
|
[碩博家園] 求調(diào)劑 330分 085600材料與化工 +3 | gqhhh 2026-03-22 | 3/150 |
|
|
[考研] 材料277求調(diào)劑 +7 | min3 2026-03-24 | 7/350 |
|
|
[考研] 328求調(diào)劑 +7 | 嗯滴的基本都 2026-03-27 | 7/350 |
|
|
[考研] 315分求調(diào)劑 +7 | 26考研上岸版26 2026-03-26 | 7/350 |
|
|
[考研] 295求調(diào)劑 +5 | 1428151015 2026-03-27 | 6/300 |
|
|
[考研] 化學(xué)308分求調(diào)劑 +8 | 你好明天你好 2026-03-23 | 9/450 |
|
|
[考研] 324求調(diào)劑 +5 | hanamiko 2026-03-26 | 5/250 |
|
|
[考研] 325求調(diào)劑 +5 | 李嘉圖·S·路 2026-03-23 | 5/250 |
|
|
[考研] 349求調(diào)劑 +4 | 李木子啊哈哈 2026-03-25 | 4/200 |
|
|
[考研] 總分322求生物學(xué)/生化與分子/生物信息學(xué)相關(guān)調(diào)劑 +5 | 星沉uu 2026-03-26 | 6/300 |
|
|
[考研] 340求調(diào)劑 +3 | Amber00 2026-03-26 | 3/150 |
|
|
[考研] 一志愿天津大學(xué)339材料與化工求調(diào)劑 +3 | 江往賣魚 2026-03-26 | 3/150 |
|
|
[考研] 334分 一志愿武理-080500 材料求調(diào)劑 +4 | 李李不服輸 2026-03-25 | 4/200 |
|
|
[考研] 【2026考研調(diào)劑】制藥工程 284分 求相關(guān)專業(yè)調(diào)劑名額 +4 | 袁奐奐 2026-03-25 | 8/400 |
|
|
[考研] 318求調(diào)劑 +3 | plum李子 2026-03-23 | 3/150 |
|
|
[考研] 化工專碩求調(diào)劑 +3 | question挽風(fēng) 2026-03-24 | 3/150 |
|
|
[考研] 一志愿南航材料專317分求調(diào)劑 +5 | 炸呀炸呀炸薯條 2026-03-23 | 5/250 |
|
|
[考研] 341求調(diào)劑(一志愿湖南大學(xué)070300) +5 | 番茄頭--- 2026-03-22 | 6/300 |
|
|
[考研] 269求調(diào)劑 +4 | 我想讀研11 2026-03-23 | 4/200 |
|