如何解决Python |将列表中的六进制字符串转换为浮点型
我在列表中有十六进制字符串的数据点。
我尝试将列表转换为字符串,然后转换为字节数组。当我尝试将字节数组转换为浮点型时,它仅返回一个值。
使用的代码是:
byteArrObj = bytearray(n,'utf-8')
byteObj = bytes(byteArrObj)
byte8=bytearray.fromhex(b)
print(byte8)
floatvalue = struct.unpack('<f',byte8[:4])
这会生成一个元组,例如`(0.09273222088813782,)。
如何打印列表中的所有浮点值?
解决方法
首先,让我们创建一个转换其中一个值的函数:
Out[1]:
( label index item
0 cell_1 1 121
1 cell_1 2 989
5 cell_2 18 777,label index item list
2 cell_1 5 222 [454]
3 cell_1 6 333 [454]
4 cell_2 1 878 [111,999]
6 cell_2 5 878 [111,999])
注意:
-
我跳过了从您的代码中找到
def hexdump_to_float(text): return struct.unpack('<f',bytes.fromhex(text))[0]
或byteArrObj
的步骤,因为它们对您的代码没有影响,也无助于解决问题。 -
我使用类型
byteObj
而不是bytes
,因为我们不需要修改基础数据。 (这类似于使用bytearray
而不是tuple
。) -
我不必理会数据切片,因为我们已经知道只有4个字节,并且因为
list
仍然会忽略缓冲区中的任何额外数据。 -
要从
struct.unpack
返回的元组中获取值,我只需索引到元组即可。这给了我一个struct.unpack
值。
这是一个简单的单行函数,但是由于它为我们正在做的工作提供了清晰的名称,因此无论如何都有助于创建一个函数。
下一步是将其应用于列表的每个元素。例如,您可以通过列表理解
轻松完成此操作float
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。