大端模式小端模式

2021-07-11 20:51:28 字數 1352 閱讀 4282

什麼是大端和小端

大端小端是位元組在記憶體中的儲存的順序。

(自己理解、方便記憶)從低位址開始到高位址,如果先存高位位元組,那麼就是大端模式,如果是先存低位位元組,就是小端模式。當然是針對至少占用兩個位元組的資料來說,如果是只占用乙個位元組,就沒有大端小端問題了。

另外網路位元組順序是大端模式。

大端小端各自優勢

小端模式 :強制轉換資料不需要調整位元組內容,1、2、4位元組的儲存方式一樣。

大端模式 :符號位的判定固定為第乙個位元組,容易判斷正負。

big-endian和little-endian的定義如下:

1) little-endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。

2) big-endian就是高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端。

舉乙個例子,比如數字0x12 34 56 78(佔四個位元組)在記憶體中的表示形式為:

1) little-endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。

2) big-endian就是高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端。

舉乙個例子,比如數字0x12 34 56 78在記憶體中的表示形式為:

1)大端模式:

低位址 —————–> 高位址

0x12 | 0x34 | 0x56 | 0x78

2)小端模式:

低位址 ——————> 高位址

0x78 | 0x56 | 0x34 | 0x12

qt中 位元組順序轉換:網路位元組序轉換成本機位元組序、本機位元組序轉換成網路位元組序 兩種轉換方法相同:

如果本機不是大端模式,就交換高低位位元組,如果是大端模式,直接返回不用交換位元組。

ushort ntohs(ushort data)

return outdata;

}

qt中直接有qsysinfo::byteorder可以判斷是否是大端模式

bool isbigendian()

c/c++中判斷大端小端的方法

bool isbigendian() //型別強制轉換方法

return

false;

}

bool isbigendian() // union 結構體方法

num;

num.a = 0x1234;

if( num.b == 0x12 )

return

false;

}

小端模式和大端模式 大端模式和小端模式

0x123456在記憶體中的儲存方式 大端模式 低位址 小端模式 低位址 不難看出大端模式比較符合人的直觀認識 1.一開始是由於不同架構的cpu處理多個位元組資料的順序不一樣,比如x86的是小段模式,keil c51是大端模式。但是後來網際網路流行,tcp ip協議規定為大端模式,為了跨平台通訊,還...

大端模式 小端模式

大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 小端模式,是指資料的低位儲存在記憶體的低位址中,而資料的高位儲存在記憶體的高位址中,這種儲存模式將...

大端模式小端模式

大端 和 小端 可以追溯到1726年的jonathan swift的 格列佛遊記 其中一篇講到有兩個國家因為吃雞蛋究竟是先打破較大的一端還是先打破較小的一端而爭執不休,甚至爆發了戰爭。1981年10月,danny cohen的文章 論聖戰以及對和平的祈禱 on holy wars and a ple...