将python列表转换为float

时间:2014-12-04 17:31:57

标签: python floating-point

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

value = readregister(registerindex,numbytes)

其中value是一个python列表。

如果numbytes为4,则将在

中返回完整的返回号码
value[0],value[1],value[2] and value[3]   

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

2 个答案:

答案 0 :(得分:4)

您需要先将四个字节的列表转换为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将字节串转换为浮点数:

f = struct.unpack("f", vstr)

在此示例中,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

答案 1 :(得分:1)

您可能正在寻找struct.unpack