用编程来判断系统是大端还是小端

  • 大端是高位字节先存储(高地址)
  • 小端是地位字节先存储(低地址)
  • 网络字节序是大端的,也就是高位字节先传输

下面是程序:

#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。很巧妙的利用联合这一特性,当然还有其他方法。

你可能感兴趣的:(操作系统)