开发中总是遇到大端和小端字节序问题,这都是由CPU引入的.
对于X86体系CPU,采用的小端字节序
对于PPC体系CPU,采用的大端字节序
什么叫小端,什么叫大端呢?
举个简单例子:
小端: int i = 0x12345678; 在内存里存的是 78 56 34 12
大端:int i = 0x12345678; 在内存里存的是12 34 56 78
以上规则只要记住大端按顺序排列就可以了,简称大顺。
如果要解决由于CPU大小端造成的这个问题,只需要做一个转换就可。以下是伪码:
union
{
int i;
char b[4];
} UL;
#if BIG_ENDIAN
#define Hbit 0
#elseif LITTLE_ENDIAN
#define Hbit 3
#endif
void f(int, *p)
{
UL ul = i;
*(p+Hbit) == ul.b[0]
....
}