在計算機儲存中儲存位元組的順序有兩種分別為大端規則和小端規則。
有乙個32位數字為:0x01020304
在小端規則的機器上,其儲存如下:
低位址->
->
高位址0x04
0x03
0x02
0x01
在大端規則機器上,其儲存如下:
低位址->
->
高位址0x01
0x02
0x03
0x04
判斷當前機器為大端規則還是小端規則,其本質是對於乙個變數,判斷其各位元組的儲存順序,
#include using namespace std;
int main() u;
u.a = 0x0102;
if (u.c[0] == 2 && u.c[1] == 1) else if (u.c[0] == 1 && u.c[1] == 2) else
return 0;
}
#include using namespace std;
int main() else if (((*a) | c) == b) else
return 0;
}
主機位元組序 大端小端
開發中總是遇到大端和小端位元組序問題,這都是由cpu引入的.對於x86體系cpu,採用的小端位元組序 對於ppc體系cpu,採用的大端位元組序 什麼叫小端,什麼叫大端呢?舉個簡單例子 小端 int i 0x12345678 在記憶體裡存的是 78 56 34 12 大端 int i 0x123456...
C 判斷主機位元組序(大端BE小端LE)
通過簡單的c程式可以判斷當前主機位元組序是大端 big endian be 或小端 little endian le code include include int main un un.s 0x0102 if sizeof short 2 else printf sizeof short d n...
大端位元組序 小端位元組序(網路位元組序 主機位元組序)
大端位元組序 整數的高位位元組儲存在記憶體的低位址處,低位元組儲存在記憶體的高位址處。一般pc大多採用小端位元組序,也稱為主機位元組序。網路上傳輸採用大端位元組序,也稱為網路位元組序。linux中常用轉換函式如下 include uint32 t htonl uint32 t hostlong 無符...