我有从硬件读取并返回的库函数
value = readregister(registerindex,numbytes)
value
python列表在哪里。
如果numbytes
为4,则将返回完整的返回数字
value[0],value[1],value[2] and value[3]
寄存器中的实际值为浮点数。那么,如何将4个元素的列表值转换为python浮点数?
您需要首先将四个字节的列表转换为Python字节字符串,然后将字符串转换为浮点值。
说你有清单value = [0, 0, 192, 63]
。首先转换为字节字符串:
vstr = ''.join([chr(k) for k in slist]) #chr converts the integer into the corresponding byte
然后,如dyoo指出的那样,您可以使用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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句