怎么读这个结果
同一个字节序列 12 34 56 78,按大端读出来是
0x12345678(十进制 305419896),按小端读出来是
0x78563412(十进制 2018915346)。
页面里每一行对应一种「解释宽度」:u16 / i16 是按 2 字节读, u32 / i32 / f32 是按 4 字节读, f64 是按 8 字节读。宽度超过输入长度时不会显示,避免误导。
什么时候需要转换
- 网络协议:TCP/IP 头部规定用大端,从抓包数据还原字段时要换
- 跨架构读取:x86 机器写出的小端文件,在大端设备上读会完全错位
- 芯片寄存器:手册里给的通常是数值,实际总线上的字节顺序要自己拼
- 二进制文件解析:PNG / JPEG 用大端,BMP / WAV 用小端
这个页面没有后端。字节解析在你浏览器里完成,数据不会上传。
常见问题
大端和小端到底差在哪?
差在多字节数据里「高位字节放前面还是后面」。大端(Big-Endian)把最高有效字节放在最低地址,读起来像我们写数字的顺序;小端(Little-Endian)把最低有效字节放在最低地址。同一个 32 位值 0x12345678,大端在内存里是 12 34 56 78,小端是 78 56 34 12。
哪些场景会遇到字节序问题?
最常见的是网络协议(TCP/IP 规定用大端,也就是「网络字节序」)、x86 与 ARM 交换文件、读取传感器或芯片寄存器、解析二进制文件格式(PNG 用大端,BMP 用小端)。跨架构通信时不转换,数值就会完全错乱。
浮点数也会受字节序影响吗?
会。浮点数的位模式同样是多字节的,按大端或小端存放,读出来就是完全不同的值。页面里 f32 / f64 两行就是这个原因——同样的 4 个字节,按大端读可能是 1.0,按小端读可能是 -1.7e38 这种数字。
ARM 一定是小端吗?
不一定。ARM 支持双端模式,可以通过 CPSR 的 E 位切换;RISC-V 规范里数据内存访问固定为小端,但部分实现支持大端指令流。所以实际对接时,一定要查具体芯片手册,不能凭架构猜。