Modbus双寄存器32位有符号整数编码字节序疑问求助
Modbus 32位整数编码字节序澄清
基础字节序定义
- 小端(Little Endian):字节层面最低有效字节(LSB)存最低地址;字层面低地址寄存器存低字。你推导的
44 33 22 11是标准双小端逻辑:低地址寄存器存低字0x3344,字节序为44 33;高地址寄存器存高字0x1122,字节序为22 11,合并后就是44 33 22 11。 - 大端(Big Endian):字节层面最高有效字节(MSB)存最低地址;字层面低地址寄存器存高字。标准大端的TCP流应为
11 22 33 44,和接收方期望的33 44 11 22完全不符。
接收方期望字节序的本质
接收方要求的33 44 11 22是混合字节序:
- 寄存器层面遵循要求:低地址寄存器存低字
0x3344,高地址寄存器存高字0x1122(小端寄存器排列); - 每个16位寄存器内部的字节采用大端排列:低字
0x3344按33 44存放,高字0x1122按11 22存放。
这种字节序不属于标准大端,也没有通用的“Mid-Little Endian”定义,行业内常称其为Modbus混合字节序或者“字小端、字节大端”模式。
内容的提问来源于stack exchange,提问作者Tobi
相关产品推荐
相关产品推荐

