我正在编写一个 Python 程序来解码传感器的 Base64(原始数据)输出,以找到它的纬度和经度。
在检查了传感器附带的用于解码值的文档(附在下面)之后,我仍然不确定如何实现它。我在下面找到了部分解决方案来转换它,但不确定如何实现最终输出。
例如,如果十六进制值为 B4 39 F5 42
,我的纬度输出应为 1.3768
。
import binascii
import struct
data = 'F9 7B 9C 45'
fdata = struct.unpack('<f', binascii.unhexlify(data.replace(' ', '')))[0]
print(fdata)
输出:
5007.49658203125
最佳答案
你就快到了。您现在应该将 float 转换为度数,如您附加的文档中指定的:
deg = fdata // 100 + (fdata % 100) / 60
结果将是 50.124943033854166
对于 'F9 7B 9C 45'
和1.3768783569335938
对于 'B4 39 F5 42'
.
关于将十六进制转换为单精度 IEEE-754 浮点的 Python 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65785481/