对于一个简单点的联合Union
union unn{
int i;
char a[3];
}
这样的联合占用四个字节没有任何问题。但是对于如下问题
unn untest;
untest.i=0x123456;
此时a[0],a[1],a[2]的值对于大端系统(高位低寸)存储内容应该是0x00,0x12,0x34,0x56此时将前三个字节转化到char即可输出结果
对于小端系统(高位高寸)存储内容应该是0x56,0x34,0x12,0x00取出前三个字节输出为char即可
二、什么是大端和小端
Big-Endian和Little-Endian的定义如下:1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
举一个例子,比如数字0x12 34 56 78在内存中的表示形式为: