- 大端是高位字节先存储(高地址)
- 小端是地位字节先存储(低地址)
- 网络字节序是大端的,也就是高位字节先传输
下面是程序:
#include <stdio.h>
int main() {
union ut{
short s;
char c[2];
}u;
if(sizeof(short) == 2)
{
u.s = 0x0102;
if(u.c[0] == 1 && u.c[1] == 2)
printf("big endian\n");
else if(u.c[0] == 2 && u.c[1] == 1)
printf("little endian\n");
}
return 0;
}
上面的程序有许多小细节,其中联合里的数据共用内存,所以数组C里的内容是0x0102。很巧妙的利用联合这一特性,当然还有其他方法。