C/C++运行时确定字节顺序

字节顺序(英文:Endianness),多字节数据在内存中的存储顺序;

1、对于特定数据,内存空间有起始地址、结束地址;

2、对于数据本身,存在高位字节、地位字节;例如

int data = 0x01020304; // 这里假定为4字节

0x01为高位字节,0x04为低位字节

 

大端序(Big-Endian):多字节数据的高位字节存储在变量的起始地址;

小端序(Little-Endian):多字节数据的低位字节存储在变量的起始地址;
即所谓大小端,指的是多字节数据的高低位;

网络字节序:大端序

C/C++ 运行时判断
了解概念后,如何用代码判定字节序可以有很多中方法,下面是Lua源码中的判定函数

inline bool IsLittleEndian()
{
    static const union {
        int dummy;
        char little;
    } nativeendian = { 1 };
    return (bool)nativeendian.little;
}

 

posted @ 2021-04-21 11:54  阿佑001  阅读(236)  评论(0编辑  收藏  举报