最近要重新研究linux網路程式設計,首先都遇到這個問題,記錄複習下吧~大小端位元組序小端位元組序:little-endian,將低位元組存放在記憶體的起始位址;本文**:
大端位元組序:big-endian,將高位元組存放在記憶體的起始位址。
例如,數字index=0x11223344,在大小端位元組序方式下其儲存形式為:
上圖一目了然的可以看出大小端位元組序的區別。
程式實現:
#include
#include
typedef
unsigned
char u8;
typedef
unsigned
short u16;
typedef
unsigned
long u32;
int main()
else
printf("大端位元組序\n");
}system("pause");
return
0;}
在windows 32位編譯器上,編譯結果:
short int=2,char=1總結:網路位元組順序採用big endian方式。x1=22
x2=11
小端位元組序
x86系列cpu都是小端little-endian位元組序,即低位元組存低位,高位元組存高位。
補充:
參考《unix環境程式設計》,在windows和ubuntu環境下大小端識別均為小端模式。
#include
#include
#include
int main()
un; un.s = 0x0102;
if( sizeof(short) == 2)
else
return
0;}
大小端位元組序的判斷
大小端位元組序是由於cpu和os對大於乙個位元組的變數各個位元組在記憶體中的儲存順序不同而產生的。以佔兩個位元組的十六進製制數0xabcd為例,小端位元組序 15 8 7 0 a bc d 15 8 7 0 c da b typedef unionto int main 網路位元組序統一為大端,主機...
大小端位元組序
1.大端和小端問題 大小端位元組序與硬體有關 intel x86 都是小端位元組序 總結 大端是 按照正常我們書寫的順序來儲存的 小端是 按照我們書寫順序相反的 實現 include int main putchar n printf x n a return 0 檢視輸出結果,判斷大小端位元組序 ...
位元組序 大小端
計算機的基本儲存單元是8位單位元組。多位元組資料,如4位元組的整型資料如何儲存的呢?是高位在記憶體高位元組?還是低位在記憶體高位元組?即位元組是按如何順序存放的?也就是所謂的位元組序,按照存放順序分為大端序 big endian 和小端序 little endian 記憶體位址訪問是由低位址到高位址...