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

Python中十六进制传感器payload转bytearray及字节序转换问题

原因说明

你当前只读取了单个字节的数值,而你预期的1280是2字节无符号整数按小端序解析的结果:1280对应的十六进制为0x0500,由偏移量6的0x00(低位字节)和偏移量7的0x05(高位字节)拼接得到。

解决方法

Python提供两种常用的多字节整数解析方案:

方案1:使用int.from_bytes(更直观,适合少量字段解析)

payload_hex = "11154c1789870005bd0005bd01000200002900"
# 注意不要用byte作为变量名,会覆盖Python内置类型,这里改用byte_data
byte_data = bytearray.fromhex(payload_hex)
decoded = {}
# 取偏移6开始的2字节,按小端序解析为无符号整数
decoded["byte_7"] = int.from_bytes(byte_data[6:8], byteorder="little", signed=False)
decoded["byte_8"] = byte_data[8]
print(decoded)
# 输出:{'byte_7': 1280, 'byte_8': 189}

方案2:使用struct模块(适合批量解析多个连续字段)

import struct
payload_hex = "11154c1789870005bd0005bd01000200002900"
byte_data = bytearray.fromhex(payload_hex)
# 格式符说明:< 代表小端序,H 代表2字节无符号整数,B 代表1字节无符号整数
decoded_val1, decoded_val2 = struct.unpack("<H B", byte_data[6:9])
decoded = {
    "byte_7": decoded_val1,
    "byte_8": decoded_val2
}
print(decoded)
# 输出:{'byte_7': 1280, 'byte_8': 189}

内容的提问来源于stack exchange,提问作者Ew Na

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:21:02