我们先假定内存结构为上下型的,上代表内存高地址,下代表内存低地址。
电脑读取内存数据时,是从低位地址到高位地址进行读取(从下到上)。
1、何为大小端
大端:数据的高位字节存放在低地址,数据的地位字节存放在高地址。
小端:数据的高位字节存放在高地址,数据的地位字节存放在低地址。
可以记忆为:小高高
例如:
一个整型数,0x1a2b3c4d
在大端机器中,从低地址到高地址的存放顺序为:0x1a,0x2b,0x3c,0x4b;
在小端机器中,从低地址到高地址的存放顺序为:0x4d,0x3c,0x2b,0x1a;
2、怎样判断机器是大端还是小端
<方法1>
将字符数据赋值给整型数据,通过读取整型数据的值来判断,因为指针总是指向数据的低地址,若为小端
机,则数据赋值给了低位,若为大端机,则数据赋值给了高位。若i=10,则为小端机,否则为大端机。
<方法2>
通过联合体的共享内存特性来判断,同样的,由于联合体的较小的成员总是按照低地址和大的成员匹配,
若un.ch == 0x4d,则可以肯定是小端机,否则为大端机。