主機位元組序 大端小端

2021-06-18 16:17:52 字數 561 閱讀 8982

開發中總是遇到大端和小端位元組序問題,這都是由cpu引入的.

對於x86體系cpu,採用的小端位元組序

對於ppc體系cpu,採用的大端位元組序

什麼叫小端,什麼叫大端呢?

舉個簡單例子:

小端: int i = 0x12345678;    在記憶體裡存的是 78 56 34 12

大端:int i = 0x12345678; 在記憶體裡存的是12 34 56 78

以上規則只要記住大端按順序排列就可以了,簡稱大順

如果要解決由於cpu大小端造成的這個問題,只需要做乙個轉換就可。以下是偽碼:

union

int i;

char b[4];

} ul;

#if big_endian

#define hbit 0

#elseif little_endian

#define hbit 3

#endif

void f(int, *p)

ul ul = i;

*(p+hbit) == ul.b[0]

大端位元組序 小端位元組序(網路位元組序 主機位元組序)

大端位元組序 整數的高位位元組儲存在記憶體的低位址處,低位元組儲存在記憶體的高位址處。一般pc大多採用小端位元組序,也稱為主機位元組序。網路上傳輸採用大端位元組序,也稱為網路位元組序。linux中常用轉換函式如下 include uint32 t htonl uint32 t hostlong 無符...

大端位元組序 小端位元組序

大端位元組序 大端儲存模式是指資料的低位元組內容儲存到記憶體的高位址中,而資料的高位元組內容儲存到記憶體的低位址中 小端位元組序 小端儲存模式是指資料的低位元組內容儲存到記憶體的低位址中,而資料的高位元組內容儲存到記憶體的高位址中 程式驗證 include int main return 0 程式改...

大端和小端(網路位元組序和主機位元組序)

大端和小端 網路位元組序和主機位元組序 大端 big endian 即網路位元組序。小端 littile endian 即主機位元組序。記憶方式 網路的範圍很大,所以大端是網路位元組序。大端方式將高位存放在低位址,小端方式將低位存放在高位址。採用大端方式進行資料存放符合人類的正常思維,而採用小端方式...