千家信息网

C/C++字节序实例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"C/C++字节序实例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C/C++字节序实例分析"吧!字节序最近在看 redis 的
千家信息网最后更新 2026年11月02日C/C++字节序实例分析

这篇文章主要讲解了"C/C++字节序实例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C/C++字节序实例分析"吧!

字节序

最近在看 redis 的内存编码,里面涉及到字节序相关的内容。这里就当复习一下,做个简单的回顾。

数据存储在内存中,是以字节为单位的,如果是单字节数据(如char、unsigned char、int8)就不会有字节序的问题。但是多字节数据(如 int、float、double)就要考虑字节序的问题了。字节序共分为两种:大端序 和 小端序。

大端序

数据的高位字节存储在地址的低端;低位字节存储在地址的高端。如图所示,值为 0x12345678 的四字节整数在大端序的主机上的内存排布。

小端序

数据的高位字节存储在地址的高端;低位字节存储在地址的低端。如图所示,值为 0x12345678 的四字节整数在小端序的主机上的内存排布。

主机字节序和网络字节序

除了主机字节序,还有网络字节序。主机字节序由CPU决定,Intel Core 经测试都是小端字节序。而网络字节序采用的是大端序。测试字节序可以通过一段 C 的源码搞定。

#include  int main(int argc, char *argv[]) {    int i;    int x = 0x12345678;    for (i = 0; i < sizeof(int); ++i) {        unsigned char *p = ((unsigned char *)(&x)) + i;        unsigned char v = *p;        printf("%p 0x%d%d\n", p, v>>4, v & 0xf );    }    return 0;}

取得整数 x 的首地址转换成 unsigned char* 指针后再向前偏移 i 个单位,分别得到这 sizeof(int) 个字节的地址,然后用 * 取得每个地址上的值,通过位运算转换成 16进制 输出。
Linux 系统可以通过指令获取 CPU 的类型:

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c4  Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz

大端序和小端序的互转

大端序和小端序的互相转换,其实就是内存翻转,在知道一个整数或者一个指针的字节数的时候,就是做一个镜像的交换。这里以 64位 整型为例:

void memrev64(void *p) {    unsigned char *x = p, t;     t = x[0];    x[0] = x[7];    x[7] = t;    t = x[1];    x[1] = x[6];    x[6] = t;    t = x[2];    x[2] = x[5];    x[5] = t;    t = x[3];    x[3] = x[4];    x[4] = t;} uint64_t intrev64(uint64_t v) {    memrev64(&v);    return v;}

64位整数的字节数为8,所以在字节序进行转换的时候:
第0个字节和第7个字节交换;
第1个字节和第6个字节交换;
第2个字节和第5个字节交换;
第3个字节和第4个字节交换;
对于 32位整数、16位整数的情况,就更加简单了,不再累述。

感谢各位的阅读,以上就是"C/C++字节序实例分析"的内容了,经过本文的学习后,相信大家对C/C++字节序实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

字节 地址 整数 大端 主机 内存 数据 存储 实例 实例分析 分析 内容 就是 网络 问题 学习 低位 低端 单位 可以通过 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州互联网科技公司 互联网科技股票 成都互联网科技公司 融势互联网科技 狮子座互联网科技培训 互联网科技的未来发展 互联网 科技馆 字节跳动和互联网科技 来此购互联网科技有限公司 昊天互联网科技有限公司 国大互联网教育科技有限公司工作 广州新华互联网科技学校电竞方面 华中科技大学互联网的牛人 滨湖区互联网智能科技产品有哪些 互联网公司高科技产品 产业互联网科技服务公司 图游互联网科技 互联网风格科技公司名称 互联网科技包装股份有限公司上市 众联互联网络科技 科技信息互联网 科技互联网技术 伴你行互联网科技有限公司 互联网科技创新的路径 滨湖区互联网智能科技产品有哪些 互联网科技数字货币 2021世界互联网领先科技成果发布 科技和互联网行业的特点 山东蛋芒互联网科技有限公司 优雇互联网科技有限公司
0