一个16位整数,由2个字节组成。内存中存储这两个字节有两种方法:

两种字节序之间没有统一的标准可循,两种格式都有系统使用。
在一个短整数变量中存放2字节的值0x0102,然后查看它的两个连续字节c[0]和c[1],以此确定字节序。
(0x0102) 二进制序列(0000 0001 0000 0010) 把二进制序列按一个字节8位拆分
(0000 0001)转十进制就是(1)
(0000 0010)转十进制就是(2)
我系统主机字节序(7.5.0: little-endian)大端[2, 1]
查看自己系统 主机字节序(host byte order) 完整代码如下:
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
union {
short s;
char c[sizeof(short)];
}un;
un.s = 0x0102;
printf("%s: ", __VERSION__);
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) = %ld\n", sizeof(short));
}
exit(0);
return 0;
}