不同的cpu存储方式也是不同,我们常见的x86就是小端模式,而有些arm则是大端模式。

大小端排序是针对字节之间的排序关系,而字节内部顺序是不变的。

小端:低字节排在内存的低地址,高字节排在内存的高地址

大端:高字节排在内存的低地址,低字节排在内存的高地址

例如:int a=0x12345678

小端模式存储:

内存 0x000000 0x000001 0x000002 0x000003
数据 0x12 0x34 0x56 0x78

大端模式存储:

内存 0x000000 0x000001 0x000002 0x000003
数据 0x78 0x56 0x34 0x12

联合体是公用内存,内部数据则是从低地址排序。

如果判断系统大小端即可方便使用联合体验证

typedef union   
{  
    char a;  
    int c;  
}Test;  
  
int check()  //1--小端  0---大端
{  
    Test t;  
    t.c=1;  
    if(t.a==1)
        return 1;
    else
        return 0;  
}