python - Python 3,打包的字节顺序/字顺序输出问题
问题描述
使用:Python 3、Endian、BinaryPayloadBuilder
编辑:这可能是 pyModbus 中的一个已知错误。我听说过有关 byteorder-wordorder 函数的类似问题。目前,我已经通过蛮力编码解决了这个问题,并且我的有效载荷工作正常。
我对 BinaryPayloadBuilder 输出有疑问。我正在尝试为 ModbusTCP 传输重现正确的字节顺序,但构建器给了我一个意想不到的结果。我使用 Wireshark 来嗅探正确的顺序,并尝试使用 python 构建相同的消息。根据嗅探,正确的结构似乎是 byteorder=Big.Endian, wordorder=Little.Endian 但将这些设置放入构建器不会改变输出。
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadBuilder
def run_binary_payload_ex():
print()
builder = BinaryPayloadBuilder(byteorder=Endian.Big, wordorder=Endian.Little)
bStrng = "<ID 30><CLR>"
builder.add_string(bStrng)
payload = builder.to_registers()
print(payload)
print("\n")
payload = builder.build()
print(payload)
if __name__ == "__main__":
run_binary_payload_ex()
输出:
[15433, 17440, 13104, 15932, 17228, 21054]
[b'<I', b'D ', b'30', b'><', b'CL', b'R>']
但我期望:
18748, 8260, 12339, 15422, 19523, 15954
[b'I<', b' D', b'03', b'<>', b'LC', b'<R']
应该为每一对交换位顺序。有人可以告诉我我做错了什么吗?
解决方案
推荐阅读
- java - 我可以在 Java 中的 IF 语句中使用 Count 吗?
- z3 - Z3 中无法满足的假设?
- javascript - 错误:'requests[0]' (oneof) 处的值无效,oneof 字段 'kind' 已设置。无法设置“createShape”
- c - 为什么我的 C 程序不能正确计算和打印文本文件中的整数?
- python - 如何检查numpy数组是否相等
- django - Django rest框架序列化程序,带有相关表中的字段
- javascript - 构建新 JSON 的函数未定义
- javascript - 使用 Transform 的 Z 索引堆叠问题
- sql - MS-Access 找不到主表的 ref 字段的唯一索引
- python - 过滤带有空数据的熊猫数据框列