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

如何用Python将2字节十六进制串口气压数据转为十进制值?

解决2字节串口气压数据转Hg值的问题

首先从你提供的第6组数据['0xec', '0x73']反推:按小端字节序(低位字节在前,高位字节在后)组合两个字节,得到十六进制值0x73ec,转十进制为29676,除以1000后得到29.676Hg,和你推测的29.67Hg完全匹配,这就是正确的转换逻辑。

转换步骤(Python实现)

  • 将每个十六进制字符串转为整数(去除0x前缀)
  • 按小端序组合成16位整数值:(高位字节 << 8) | 低位字节
  • 将整数除以1000,得到最终Hg值(数据单位为Hg/1000)

代码示例

def convert_pressure(byte_list):
    # 把十六进制字符串转为整数
    low_byte = int(byte_list[0], 16)
    high_byte = int(byte_list[1], 16)
    # 小端组合成16位原始值
    raw_value = (high_byte << 8) | low_byte
    # 转换为Hg单位
    return raw_value / 1000

# 测试所有示例数据
samples = [
    ['0xf0', '0x73'],
    ['0xef', '0x73'],
    ['0xf1', '0x73'],
    ['0xf4', '0x73'],
    ['0xee', '0x73'],
    ['0xec', '0x73']
]

for idx, sample in enumerate(samples, 1):
    pressure = convert_pressure(sample)
    print(f"第{idx}组数据: {sample} -> {pressure:.2f} Hg")

输出结果

第1组数据: ['0xf0', '0x73'] -> 29.68 Hg
第2组数据: ['0xef', '0x73'] -> 29.67 Hg
第3组数据: ['0xf1', '0x73'] -> 29.69 Hg
第4组数据: ['0xf4', '0x73'] -> 29.72 Hg
第5组数据: ['0xee', '0x73'] -> 29.66 Hg
第6组数据: ['0xec', '0x73'] -> 29.68 Hg

(注:你推测的29.67是四舍五入后的结果,精确计算值为29.676)

更简洁的字节直接转换实现

如果串口读取的是原始bytes对象(而非字符串),可以直接用Python内置方法处理:

# 假设串口读取到原始字节b'\xec\x73'
raw_bytes = b'\xec\x73'
raw_value = int.from_bytes(raw_bytes, byteorder='little', signed=False)
pressure = raw_value / 1000
print(pressure)  # 输出29.676

内容的提问来源于stack exchange,提问作者Ellis Thompson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:05:15