主机字节序 大端小端

来源:互联网 发布:mia wasikowska 知乎 编辑:程序博客网 时间:2024/05/23 15:42

开发中总是遇到大端和小端字节序问题,这都是由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]

....

}



原创粉丝点击