開發中總是遇到大端和小端位元組序問題,這都是由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 即主機位元組序。記憶方式 網路的範圍很大,所以大端是網路位元組序。大端方式將高位存放在低位址,小端方式將低位存放在高位址。採用大端方式進行資料存放符合人類的正常思維,而採用小端方式...