字节序转换工具

用法:输入十六进制数据,自动计算大端/小端/字交换的结果。解决 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),而不是完全字节反转。

← 返回在线工具总览