字节序
顾名思义,就是内存中存储字节的顺序。一种是起始地址存储低序字节,叫 little-endian 小端字节序。另一种是起始地址存储高序字节,叫 big-endian 大端字节序。
判断大小端程序
#include <stdio.h>
#define CPU_VENDOR_OS "Ubuntu 18.04"
int main(int argc, char **argv)
{
union {
short s;
char c[sizeof(short)];
}un;
un.s = 0x0102;
printf("%s: ", CPU_VENDOR_OS);
if(sizeof(short) == 2) {
if(un.c[0] == 1 && un.c[1] == 2) {
printf("big-endain\n");
}
else if(un.c[0] == 2 && un.c[1] == 1) {
printf("litle-endain\n");
}
else {
printf("unknown\n");
}
}
else {
printf("sizeof(short) = %ld\n", sizeof(short));
}
return 0;
}