主机字节序的大端和小端
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; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步