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
相关产品推荐
相关产品推荐

