大小端是什么?
这个问题在这里不做过多解释,可以参考:大小端模式详解。
但还是给出一些基本概念:
大小端问题产生的原因:由于在各种体系结构的处理器中,对多个字节数据的内存操作有着不同的定义,所以当处理器在读写一个多个字节内存时,可能涉及到大小端问题。如果处理器读写指令针的数据长度不一致的时候,就会产生大小端的问题。
在小端模式中,数据的低字节将会存放在内存的低地址处,数据的高字节会存放在内存的高地址处。
而在大端模式中,数据的高字节则会存放在内存的低地址处,数据的低字节则存放在内存的高字节出。所以可能一段涉及内存的代码,在小端模式和大端模式有着不同的输出结果。
测试代码1.
int checkCPU(void)
{
union
{
int a;
char b;
}c;
c.a = 1;
return (c.b == 1