| 4 | 1/1 | 返回列表 |
| 查看: 1015 | 回復(fù): 3 | ||
opticer金蟲 (小有名氣)
|
[求助]
為什么用CFile讀出來的字節(jié)順序是反的
|
|
我想讀一個(gè)文件,文件最開始是一個(gè)帶符號(hào)的4字節(jié)整形常量,每個(gè)字節(jié)如下: 0x88 10001000 0x1b 00011011 0x03 00000011 0x6f 01101111 也就是這4個(gè)字節(jié)合在一塊組成一個(gè)為: 0x881b036f 的有符號(hào)整數(shù) 這個(gè)值應(yīng)該為 -2011495569。 下面是讀這個(gè)值的簡(jiǎn)單代碼,讀出來發(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è)試了一下,用c++把int類型的數(shù)字1寫進(jìn)了一個(gè)二進(jìn)制文件里面,里面的內(nèi)容(使用xxd -b)是: 00000001 00000000 00000000 00000000 低位到高位是由左到右排的。 我不在linux下面寫程序,所以不方便測(cè)試MFC函數(shù)的程序。 或許也有其他方案,不過把輸入文件里面的高低位順序做個(gè)調(diào)整,是最直觀的辦法吧。。。 |

木蟲 (著名寫手)

金蟲 (小有名氣)
|
在計(jì)算機(jī)中多字節(jié)數(shù)據(jù)類型在存儲(chǔ)區(qū)內(nèi)有一個(gè)字節(jié)排序問題.Intel 32位處理器采用little endian即小端字節(jié)排序,具體為:最低有效字節(jié)放在存儲(chǔ)器字節(jié)地址較低的單元,最高有效地址放在存儲(chǔ)器字節(jié)地址較高的單元. 而有些處理器如SUN SPARC采用Big Endian即高端字節(jié)排序,具體為:最低有效字節(jié)放在存儲(chǔ)器字節(jié)地址較高的單元,最高有效地址放在存儲(chǔ)器字節(jié)地址較低的單元. 從你的結(jié)果描述可以看出,你在讀一個(gè)4字節(jié)的整形量,pbuf指向了4字節(jié)存儲(chǔ)區(qū)的最低字節(jié)位置,你用的機(jī)器cpu是Intel 或x86兼容的。因此讀出的次序就如同你描述的那樣。 |
| 4 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 一志愿211 初試270分 求調(diào)劑 +7 | 谷雨上岸 2026-03-23 | 8/400 |
|
|---|---|---|---|---|
|
[考研] 322求調(diào)劑 +7 | 宋明欣 2026-03-27 | 7/350 |
|
|
[考研] 085701求調(diào)劑初試286分 +4 | secret0328 2026-03-28 | 4/200 |
|
|
[考研] 070305高分子化學(xué)與物理 304分求調(diào)劑 +5 | c297914 2026-03-28 | 5/250 |
|
|
[考研] 一志愿太原理工安全工程300分,求調(diào)劑 +4 | 0857求調(diào)劑. 2026-03-24 | 5/250 |
|
|
[考研] 322求調(diào)劑 +5 | 舊吢 2026-03-24 | 5/250 |
|
|
[考研] 308求調(diào)劑 +7 | 墨墨漠 2026-03-27 | 7/350 |
|
|
[考研] 295求調(diào)劑 +5 | 1428151015 2026-03-27 | 6/300 |
|
|
[考研] 272求調(diào)劑 +7 | 腳滑的守法公民 2026-03-27 | 7/350 |
|
|
[考研] 材料292調(diào)劑 +12 | 橘頌思美人 2026-03-23 | 12/600 |
|
|
[考研] 求調(diào)劑323材料與化工 +7 | 1124361 2026-03-24 | 7/350 |
|
|
[考研] 材料調(diào)劑 +8 | 匹克i 2026-03-23 | 8/400 |
|
|
[考研] 324求調(diào)劑 +8 | hanamiko 2026-03-26 | 10/500 |
|
|
[考研] 0703化學(xué)求調(diào)劑 +3 | 丹青奶蓋 2026-03-26 | 5/250 |
|
|
[考研] 289求調(diào)劑 +17 | 碩星赴 2026-03-23 | 17/850 |
|
|
[考研] 一志愿中南大學(xué)化學(xué)學(xué)碩0703總分337求調(diào)劑 +7 | niko- 2026-03-22 | 7/350 |
|
|
[考研] 生物技術(shù)與工程 +3 | 1294608413 2026-03-25 | 4/200 |
|
|
[考研] 302求調(diào)劑 +4 | 錦衣衛(wèi)藤椒 2026-03-25 | 4/200 |
|
|
[考研] 335求調(diào)劑 +4 | yuyu宇 2026-03-23 | 5/250 |
|
|
[考研] 315分,誠(chéng)求調(diào)劑,材料與化工085600 +3 | 13756423260 2026-03-22 | 3/150 |
|