大端小端问题
大端字节序:高端字节序(网络字节序),高端地址存放低位数据,底端地址存放高位数据
小端字节序:底端字节序,低端地址存放低位数据,高端地址存放高位数据
// 拿这个共享体来举例
// short 类型是2个字节的换成16进制应该为0x0000(0x表示16进制)
// 因为共享体只能存储一个有效数据所以我们来看一下
// 我们存储16进制0x0102我们认为地址中应该是也是0x0102这样存储的,这样就是小端字节序,但是你把下面的
// 程序输出一下就知道
// v.c[0] = 2, v.c[1] = 1,跟我们的猜测不一样,他其实存储的是0x0201,这就是一个大端存储。
#include <stdio.h>
#include <stdlib.h>
union var{
short s;
char c[sizeof(short)];
};
int main()
{
union var v;
v.s = 0x0102;
printf("%d,%d,%d\n", v.c[0], v.c[1], v.s);
return 0;
}