一個16位的整數,由兩個字節組成。內存中存儲這個兩個字節有兩種方法:一種是將低位字節存儲在起始地址,這種方式稱為小端(little-endian)字節序;另外一種是將高位字節存儲在起始地址,這種方式稱為大端(big-endian)字節序。
在網絡編程、系統設計、匯編中可能會涉及到大端小端問題。
下面一個簡單C程序可以判斷出你所使用的機器是大端還是小端
#include<stdio.h> int main(int argc, char const *argv[]) { union //采用union的以不同方式表示數據 { short s; char c[sizeof(short)]; }un; un.s=0x0102; printf("char is %lu byte\n ",sizeof(char) ); if(sizeof(short)==2) { if((un.c[0]==1) && (un.c[1]==2) ) { printf("big-endian\n" ); } else if((un.c[0]==2) && (un.c[1]==1) ) { printf("little-endian\n"); } else { printf("unknown\n"); } } else { printf("sizeof(short)== %lu\n",sizeof(short)); } return 0; }
參考:Unix網絡編程