Python |将列表中的十六进制字符串转换为浮点

2024-09-23 16:31:20 发布

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

我在列表中有十六进制字符串的数据点

我尝试将列表转换为字符串,然后转换为字节数组。当我尝试将字节数组转换为浮点时,它只返回一个值

使用的代码是:

byteArrObj = bytearray(n, 'utf-8')
byteObj = bytes(byteArrObj)
byte8=bytearray.fromhex(b)
print(byte8)
floatvalue = struct.unpack('<f', byte8[:4])

这将生成一个元组,如`(0.09273222088813782,)

如何打印列表中的所有浮点值


Tags: 数据字符串代码列表字节bytes数组utf
1条回答
网友
1楼 · 发布于 2024-09-23 16:31:20

首先,让我们创建一个函数来转换其中一个值:

def hexdump_to_float(text):
    return struct.unpack('<f', bytes.fromhex(text))[0]

注意:

  1. 我跳过了从代码中查找byteArrObjbyteObj的步骤,因为它们对代码没有影响,也无助于解决问题

  2. 我使用类型bytes而不是bytearray,因为我们不需要修改底层数据。(这类似于使用tuple而不是list。)

  3. 我不需要对数据进行切片,因为我们已经知道只有4个字节,而且struct.unpack无论如何都会忽略缓冲区中的任何额外数据

  4. 为了从struct.unpack返回的元组中获取值,我只需索引到元组中。这给了我一个float

这是一个简单的单行函数,但它有助于创建一个函数,因为它为我们正在做的事情提供了一个清晰的名称

下一步是将其应用于列表的每个元素。例如,您可以通过列表理解轻松做到这一点:

my_floats = [hexdump_to_float(x) for x in my_hexdumps]

相关问题 更多 >