gpt4 book ai didi

python - 将两个原始值转换为 32 位 IEEE float

转载 作者:行者123 更新时间:2023-12-01 21:48:28 25 4
gpt4 key购买 nike

我正在尝试通过 TCP modbus 解码来自 Shark 100 功率计的一些数据。我已经成功地拉下了我需要的寄存器,并从寄存器中留下了两个原始值,如下所示:

[17138, 59381]

根据手册,我知道我需要将这两个数字转换成一个 32 位的 IEEE float 。我还从手册中知道“低地址寄存器是高阶一半(即包含指数)。”上面显示的列表中的第一个数字是地址较低的寄存器。

使用 Python(如果需要,任何库都可以),我将如何获取这两个值并将它们转换为 32 位 IEEE 浮点值。

我曾尝试使用各种在线转换器和计算器来找出一种非编程方式来执行此操作,但是,我尝试过的任何方法都会得到超出范围的结果(我在这种情况下读取的是伏特,所以最终结果应该是上面提供的值的 120-122 左右)。

最佳答案

Python 3.6+ 更新(f 字符串)。

我不确定为什么@B.Go 的答案只有2。此外,由于字节顺序是 big-endian,我将其硬编码为这样。

import struct
a = 17138
b = 59381
struct.unpack('>f', bytes.fromhex(f"{a:0>4x}" + f"{b:0>4x}"))[0]

输出:121.45304107666016

关于python - 将两个原始值转换为 32 位 IEEE float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59883083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com