博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
主机字节序的大端和小端
阅读量:5168 次
发布时间:2019-06-13

本文共 806 字,大约阅读时间需要 2 分钟。

1.定义:
    大端模式(Big Endian):数据的高字节,保存在内存的低地址中;数据的低字节,保存在内存的高地址中。
    小端模式(Little Endian):数据的高字节,保存在内存的高地址中;数据的低字节,保存在内存的低地址中。
 
2. 判断操作系统是大端还是小端:
bool IsBigEndian(){    union NUM    {        int a;        char b;    }num;    num.a = 0x1234;    if(num.b == 0x12)     //低位地址存高位数值,说明是大端        return true;    else        return false;}
3. 大端和小端的转换函数:
(1)32位系统下:
uint32_t reversebytes_32(uint32_t value){    return (value&0x000000FF)<<24 | (value&0x0000FF00)<<8 | (value&0x00FF0000)>>8 | (value&0xFF000000)>>24;}
(2)64位系统下:
uint64_t reversebytes_64(uint64_t value){    uint32_t low_uint64 = uint64_t(reversebytes_32(uint32_t(value)));  //低32位转换    uint64_t high_uint64 = (uint64_t)reversebytes_32(uint32_t(value>>32)); //高32位转换    return (low_uint64<<32) + high_uint64;}

 

转载于:https://www.cnblogs.com/ladawn/p/8591104.html

你可能感兴趣的文章