NetAssist 中文文档 下载 App

整数格式转换 16 位 32 位 字节序切换

什么时候需要整形转换

网络上传送的整数可能以不同方式编码:

从设备收到一串 HEX 数据后,需要正确解释这些字节代表的整数值。

支持的转换类型

参数选项说明
位宽8 / 16 / 32 / 64 位半个字节到 8 字节
字节序小端 / 大端内存排列顺序
有符号性有符号 / 无符号最高位是否作为符号位

小端 vs 大端实例

HEX 值 0102(两字节):

同一个字节序列,字节序不同,整数值不同。

有符号 vs 无符号

HEX 值 FF(单字节):

对于有符号整数,最高位是符号位——0 表示正数,1 表示负数,负数用补码编码。

与 Modbus 寄存器配合

Modbus 寄存器是 16 位的。如果设备用两个寄存器组合成一个 32 位整数,需要:

  1. 先读两个寄存器的原始值。
  2. 确认设备用的是"高寄存器在前"还是"低寄存器在前"(对应大端还是小端)。
  3. 用整形转换工具把两个 16 位值拼成一个 32 位整数。

调试场景

场景:解析传感器上报的 3 字节时间戳

有用户提到传感器用 3 字节存储毫秒时间戳,但 NetAssist 的整形转换工具原来只有 2 和 4 字节选项。官方已表示下个版本会增加 3 字节整型支持。当前版本的变通方法是:用 HEX 模式手动截取,在外部计算。

场景:确认设备字节序

让设备发送一个已知值(比如 0x12345678),观察收到的字节序列:

然后就可以在所有后续转换中正确选择字节序。