介绍
计算机有little endian(小端)和big endian(大端)之分,两张从 维基百科盗来的图就可以说明它们的区别:
对于32位的整数,大端机器会在内存的低地址存储高位,在高地址存储低位。
小端机器恰好相反,内存的低地址存储低位,在高地址存储高位。
大端表示法和人的直观比较相符,从低地址向高地址看过去,就是原先的数;小端表示法更便于计算机的操作,地址增加和个十百千万的增加是一致的。
如何判断自己的计算机是little endian还是big endian呢?intel的机器基本全是little endian,也可以运行简单的代码判断。
方法一:
python -c "import sys; print(sys.byteorder)"
终端运行上述代码,我的本本上输出little
就表示是小端机器。
方法二:
写一个简单的C程序,下面这个是从nginx源码抄来的:
#include <stdio.h>
int main() {
int i = 0x11223344;
char *p;
p = (char *) &i;
if (*p == 0x44) {
printf("Little endian\n");
}
else {
printf("Big endian\n");
}
return 0;
}
然后运行一发就可以了:
gcc test.c && ./a.out