计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。
我们现在有一个整数是258。用16进制表示是0x0102,然后我们把这个整数拆分成两个字节,第一个字节为 0000 0001,第二个字节为 0000 0010。
如果在一个使用大端字节序的电脑上,这个整数会被这样存放:
如果一个使用小端字节序的电脑上,这个整数的高字节就会存放在高地址上:
现在大部分的机器,都采用了小端字节序。但是在 IO 方面,则大部分使用大端字节序。例如,你要使用网络发送一个 int 类型的变量,要先把 int 转换成大端字节序,然后通过网络发送。
大端字节序又被称之为网络细节序。
判断电脑是大端字节序还是小端字节序?
#includeint main() { int i = 0x1122; char * p = (char *)&i; if (p[0] == 0x22 && p[1] == 0x11) { printf("Little Endiann"); } else if (p[0] == 0x11 && p[1] == 0x22) { printf("Big Endiann"); } }
int JudgeSystem(void) {
int a = 1;
char * p = (char *)&a;
if (1 == *p) {
return 1;
} else {
return 0;
}
}




