You need to enable JavaScript to run this app. 如何将UART传输收到的char数组还原为对应的32位float数值
优惠活动
大模型
产品
解决方案
定价
更多

如何将UART传输收到的char数组还原为对应的32位float数值

字节数组转float实现方案

原理说明

你在C端直接通过指针获取float内存地址的写法,本质是传输IEEE 754标准的32位单精度浮点数原生字节序列,单精度float固定占4字节,你收到的6字节列表中前4位[236, 81, 43, 66]就是对应42.83的有效字节,后2位为额外传输数据,解析float时仅需要截取前4位即可。

Python实现代码

Python标准库struct模块专门用来处理字节序列和基础类型的互转,直接调用即可:

import struct

# 你收到的原始字节列表
raw_list = [236, 81, 43, 66, 4, 42]
# 截取前4个有效字节转为bytes类型
float_bytes = bytes(raw_list[:4])
# 按小端序解析32位单精度浮点数,<表示小端,f表示单精度float
result = struct.unpack('<f', float_bytes)[0]

print(result)
# 输出为42.83000183105469,属于单精度浮点数正常精度误差,可按需保留小数位

注意事项

  • 如果解析出来数值不对,大概率是字节序不匹配,把格式符里的<换成>切换为大端序重试即可,字节序取决于你发送端设备的CPU架构,常见的ARM、x86都是小端序。
  • 如果传输多个float,每次按顺序截取4字节解析即可,注意和你的传输协议对齐避免错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 09:45:05