字节序转换工具
用法:输入十六进制数据,自动计算大端/小端/字交换的结果。解决 Modbus 32 位浮点、PLC 多寄存器数据解析时的字节序问题。
全部在浏览器本地计算,不上传、不联网、不记录。
1 16 位 / 32 位字节序转换
选择位宽并输入十六进制后实时出结果
2 32 位浮点四种字节序对照(Modbus 常用)
输入 4 个字节(如 41 48 00 00 = 12.5 标准大端),自动算出 ABCD / CDAB / BADC / DCBA 四种排列对应的浮点值。
输入 4 字节后显示四种字节序的浮点值
32 位数据四种字节序说明
| 排列 | 名称 | 说明 | 常见场景 |
|---|---|---|---|
| ABCD | 标准大端 (Big-Endian) | 高字节在前,和阅读顺序一致 | 网络字节序、大多数 PLC 默认 |
| CDAB | 字交换 (Word Swap) | 16位字顺序交换,字节内部不变 | 部分 Modbus 设备/网关的 32 位浮点 |
| BADC | 字节交换 (Byte Swap) | 每个字内字节交换,字顺序不变 | 较少见,某些小端设备传输 |
| DCBA | 完全反转 (Little-Endian) | 所有字节完全反转 | x86 内存布局、某些小端系统 |
常见问题
什么是大端(Big-Endian)和小端(Little-Endian)?
大端模式:数据的高字节存放在低地址,低字节存放在高地址(和人类阅读顺序一致)。小端模式:数据的低字节存放在低地址,高字节存放在高地址。x86/x64 CPU 用小端,网络字节序(TCP/IP)用大端,大多数 PLC 寄存器按大端传输。
Modbus 读出来的 32 位浮点为什么是反的?
Modbus 协议只定义了 16 位寄存器的传输顺序(大端),但 32 位数据(如浮点)由两个寄存器组成,寄存器的排列顺序没有统一标准。有的设备是 ABCD(标准大端),有的是 CDAB(字交换),有的是 BADC(字节交换),有的是 DCBA(完全反转)。遇到浮点不对,先试这四种字节序。
西门子 PLC 和三菱 PLC 的字节序一样吗?
两者的 16 位寄存器都是大端(高字节在前),但 32 位数据的字顺序可能不同。西门子 S7 通常是 ABCD(标准大端),三菱 Q 系列也通常是 ABCD,但某些第三方网关或设备可能做字交换变成 CDAB。实际调试时以设备手册和抓包结果为准。
字节序转换和字交换(Word Swap)有什么区别?
字节序转换(Byte Swap)是把每个字节的顺序完全反转,如 ABCD → DCBA。字交换(Word Swap)只交换 16 位字的顺序,字节内部不变,如 ABCD → CDAB。32 位浮点在 Modbus 中最常见的问题就是字交换(CDAB),而不是完全字节反转。