字节序:数据的存储顺序
计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)
大端字节序:高位字节在前,低位字节在后
小端字节序:低位字节在前,高位字节在后
如何判断你的存储方式是大端序还是小端序?
简单方式:使用联合体判断,我们知道联合体在同一空间可以存储(但不同时)不同类型数据的复合数据类型,公用同一个空间,不能同时使用
union isendian{ unsigned int a; unsigned char b; }; void is_endian(void) { union isendian x; x.a = 0x12345678; if(x.b == 0x78) printf("小端序~!\n"); else printf("大端序~!\n"); printf("&x = %p\n",&x); printf("&x.a = %p\n",&x.a); printf("&x.b = %p\n",&x.b); printf("sizeof(x) = %d\n",sizeof(x)); printf("sizeof(x.a) = %d\n",sizeof(x.a)); printf("sizeof(x.b) = %d\n",sizeof(x.b)); } int main(void) { is_endian(); return 0; }