C语言深度解析:大小端字节序——多字节数据的底层存储规则

简介: 大小端指CPU对多字节数据在内存中的存放顺序:大端高字节存低地址,小端反之。x86/ARM默认小端,网络字节序统一为大端。跨平台、网络通信、二进制协议开发中必须显式处理字节序转换,否则数据解析必错。

大小端是CPU对多字节数据在内存中的存放顺序,是嵌入式、网络通信、二进制协议开发中必踩的底层知识点,与语法无关,却直接决定数据解析是否正确。

一、大小端的本质

  • 大端序(Big-Endian)
    数据高字节存低地址,低字节存高地址,和人类书写顺序一致。
    例:0x12345678 → 内存:12 34 56 78

  • 小端序(Little-Endian)
    数据低字节存低地址,高字节存高地址。
    x86、ARM 等主流 CPU 默认都是小端
    例:0x12345678 → 内存:78 56 34 12

二、C 语言判断大小端(最简代码)

利用 union 共享内存特性,直接读取首字节判断:

#include <stdio.h>

int is_little_endian() {
   
    union {
   
        int  n;
        char c;
    } u;
    u.n = 1;
    // 首字节为1 → 小端;为0 → 大端
    return u.c == 1;
}

int main() {
   
    if (is_little_endian())
        printf("小端序\n");
    else
        printf("大端序\n");
    return 0;
}

三、最容易踩坑的 3 个场景

  1. 网络传输
    网络字节序统一为大端,本机发数据必须用 htons / htonl 转序,接收用 ntohs / ntohl 转回,否则数据乱码。

  2. 二进制文件/Flash 存储
    不同架构设备读写同一文件,不做字节序转换,解析结果完全错误。

  3. 指针强转解析多字节数据
    直接用 char* 读取 int 数据时,大小端不同,取出的字节顺序完全相反。

四、总结

大小端是硬件架构决定的内存规则,不是 C 语言语法,但直接影响跨平台、网络、底层数据交互。
写底层协议、驱动、跨端数据交互时,永远假设大小端未知,用通用转序逻辑,才是稳健的 C 语言开发思路。

相关文章
|
1月前
|
存储 安全 C语言
C语言深度解析:函数指针的底层本质与避坑指南
本文深入剖析C语言函数指针的本质——函数名即代码段入口地址,厘清其与数据指针的根本差异;系统梳理回调、跳转表、中断向量、动态库等核心应用场景;重点警示签名不匹配、`void*`强转、野指针调用三大致命陷阱,并给出`typedef`封装、空值校验、边界防护等最佳实践。(239字)
436 134
|
1月前
|
存储 缓存 Java
Java 对象内存布局:从堆内存储到伪共享优化的底层真相
Java对象内存布局是JVM核心基础:含对象头(Mark Word+Klass指针)、实例数据(字段重排序优化)和对齐填充(8字节对齐)。它直接影响内存占用、GC效率、锁升级与伪共享性能。掌握此机制,是深入理解并发优化(如@Contended)、指针压缩及高性能编程的必经之路。(239字)
337 111
|
7天前
|
大数据 索引 Python
5个提升Python编码效率的实用技巧
5个提升Python编码效率的实用技巧
268 130
|
1月前
|
Go 数据库
Go并发编程:巧用Context处理超时与取消
Go并发编程:巧用Context处理超时与取消
333 135
|
1月前
|
JavaScript 前端开发 API
解锁 JavaScript 解构赋值的 5 个隐藏技巧
解锁 JavaScript 解构赋值的 5 个隐藏技巧
383 142
|
1月前
|
人工智能 数据可视化 安全
两步搞定!阿里云OpenClaw一键秒级部署指南
OpenClaw(原Clawdbot)是开源AI智能体,支持QQ、飞书、钉钉等平台,具备文件读写、命令执行、浏览器自动化等能力。阿里云提供一键部署方案:选镜像→配实例,全程零代码、可视化,最快2步完成,新手也能轻松上手!
559 130
|
28天前
|
资源调度 运维 供应链
【多微电网】计及碳排放的基于交替方向乘子法(ADMM)的多微网电能交互分布式运行策略研究附Matlab代码
​ ✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。 🔥 内容介绍 一、研究背景 电动汽车市场的蓬勃发展 电力系统面临的挑战 二、用户充电负荷与最优分时电价互动的意义 优化电网负荷曲线 提升用户经济效益 三、光储充换电站的关键组成部分及作用 光伏发电系统 储能系统 充电与换电设施 四、优化模型的构建思路 目
323 123
|
1月前
|
前端开发 JavaScript 开发者
前端开发:不写样式代码才是最好的写样式方式
本文揭示前端开发中“重样式、轻业务”的困局,指出CSS调试耗时低效、易出错且价值难被认可。提出通过架构层建设统一的样式体系——涵盖组件库、样式库、mixin、变量、PostCSS与Stylelint,让业务开发者少写甚至不写CSS,专注核心逻辑,实现高效、一致、可维护的前端研发。
386 124
|
1月前
|
人工智能 JavaScript Linux
【最新版养 AI龙虾🦞指南】零基础 OpenClaw 阿里云/本地部署、配置、使用保姆级教程
OpenClaw(原Clawdbot,曾用名Moltbot)作为一款开源轻量级AI自动化代理工具,2026年版本在部署灵活性、功能兼容性上实现重大升级,核心优势在于“自然语言驱动+全流程任务自动化”,无需手动编写脚本,仅需输入口语化指令,即可完成文档处理、日程管理、文件读写、跨工具协同、代码生成等各类重复性工作,被广泛应用于个人办公、新手开发、轻量团队协作等场景,堪称“私人AI员工”。
1190 93
|
29天前
|
人工智能 弹性计算
阿里云9.9元/月低成本部署OpenClaw+免费Token领取全攻略
还在为AI智能体部署复杂、成本高而烦恼?本文教你用阿里云轻量应用服务器(新用户首月仅9.9元),一键部署OpenClaw智能体,并领取百炼平台7000万免费Token,零门槛实现24小时在线AI员工!
1382 127

热门文章

最新文章

下一篇
开通oss服务