You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中int.to_bytes处理整数288未生成第二个字节0x20的问题咨询

Python中int.to_bytes处理整数288未生成第二个字节0x20的问题咨询

大家好,我最近在构造ModBus命令字节数组时遇到了一个奇怪的问题,想请各位帮忙排查下。

我的需求是生成用于发送ModBus命令的字节数组,初始数组已经填充了0x05 0x04(对应设备地址5,读操作),接下来需要计算并添加地址部分。

相关代码片段如下:

async def requestErrorLogNumber(blueClient, errorLogNum):
    global requestedState

    # 创建ModBus读取消息
    # 目标设备为1号,起始地址基础值加日志编号计算出实际地址
    modbusBytes = READ_DEVICE_5
    address = 256 + (errorLogNum*32)

    # 将计算出的地址转换为字节并添加到数组中
    byte_address = address.to_bytes(length=2, byteorder='big')
    modbusBytes += byte_address

    size = 8
    readSize = size.to_bytes(length=2, byteorder='big')
    modbusBytes += readSize

    # 计算ModBus报文的CRC校验值
    headerCRC = crccheck.crc.Crc16Modbus()
    headerCRC.process(modbusBytes)
    tempCrc = headerCRC.final()

现在遇到的问题是:计算得到的address值是288,但调用address.to_bytes(length=2, byteorder='big')后,得到的结果居然是单个字节0x01,而不是预期的0x01 0x20。更奇怪的是,后面处理读取长度8的时候,size.to_bytes(length=2, byteorder='big')却能正确返回0x00 0x08。我甚至直接测试(288).to_bytes(length=2, byteorder='big'),结果还是只有单个字节0x01,实在搞不懂哪里出错了。

附上调试时的截图:
调试界面截图

备注:内容来源于stack exchange,提问作者lynnejohn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:08:02