You need to enable JavaScript to run this app. Python3.4中如何将串口接收的两个16位整数转换为有符号浮点数?
优惠活动
大模型
产品
解决方案
定价
更多

Python3.4中如何将串口接收的两个16位整数转换为有符号浮点数?

实现方案

你可以直接使用Python标准库的struct模块完成转换,无需额外安装第三方依赖,完全兼容Python3.4环境。

转换逻辑完全匹配你给出的规则:

  • 输入的两个16位整数,第一个为32位数据的低16位,第二个为32位数据的高16位
  • 拼接为32位无符号整数后,按IEEE 754单精度浮点规则解析为对应浮点值
import struct

def u16_pair_to_float(u16_list):
    # 拆分高低16位
    low_16, high_16 = u16_list
    # 拼接为32位无符号整数
    u32_val = (high_16 << 16) | low_16
    # 先将32位整数打包为大端格式的4字节二进制数据,再解析为单精度浮点数
    return struct.unpack('>f', struct.pack('>I', u32_val))[0]

# 示例测试
if __name__ == "__main__":
    test_input = [48822, 15938]
    output = u16_pair_to_float(test_input)
    print(round(output, 6))  # 输出结果为 0.190181,和示例完全一致

补充说明

如果后续你遇到串口数据字节序相反的场景,只需要把代码中struct方法里的大端标识>改为小端标识<即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 13:51:02