转换python-lis

2024-09-24 06:22:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从硬件读取并返回的库函数

value = readregister(registerindex,numbytes)

其中value是python列表。在

如果numbytes为4,则返回的完整数字将在中返回

^{pr2}$

寄存器中的实际值是浮点数。 那么,如何将这个4个元素的列表值转换为python浮点数呢?在


Tags: 元素列表硬件value数字寄存器浮点数库函数
2条回答

您可能正在寻找struct.unpack。在

首先需要将四个字节的列表转换为Python字节字符串,然后将该字符串转换为浮点值。在

假设您有列表value = [0, 0, 192, 63]。首先转换为字节字符串:

vstr = ''.join([chr(k) for k in slist]) #chr converts the integer into the corresponding byte

然后,作为dyoo points out,您可以使用struct.unpack将字节字符串转换为浮点数:

^{pr2}$

在这个例子中,f是1.5。在

你需要知道的一件事是你的硬件设备的终结性。如果在您进行解包的平台上,使用“f”作为格式字符串到struct.unpack将给出错误的答案。在格式字符串前面加上<,对于小端设备,>对于大端设备:

fle = struct.unpack("<f", ''.join([chr(k) for k in value]) #for little-endian HW
fbe = struct.unpack(">f", ''.join([chr(k) for k in value]) #for big-endian HW

相关问题 更多 >