Python |将列表中的十六进制字符串转换为浮点数
Python | Convert hexstrings in a list to float
我在列表中有十六进制字符串的数据点。
我尝试将列表转换为字符串,然后再转换为字节数组。当我尝试将字节数组转换为只浮动它时 returns 一个值。
使用的代码是:
byteArrObj = bytearray(n, 'utf-8')
byteObj = bytes(byteArrObj)
byte8=bytearray.fromhex(b)
print(byte8)
floatvalue = struct.unpack('<f', byte8[:4])
这会生成一个元组,例如`(0.09273222088813782,)。
如何打印列表中的所有浮点值?
首先,让我们创建一个函数来转换其中一个值:
def hexdump_to_float(text):
return struct.unpack('<f', bytes.fromhex(text))[0]
通知:
我跳过了从你的代码中找到 byteArrObj
或 byteObj
的步骤,因为它们对你的代码没有影响,也无助于解决问题。
我使用类型bytes
而不是bytearray
,因为我们不需要修改底层数据。 (这类似于使用 tuple
而不是 list
。)
我不想对数据进行切片,因为我们已经知道只有 4 个字节,而且 struct.unpack
无论如何都会忽略缓冲区中的任何额外数据。
为了从 struct.unpack
returns 的元组中获取值,我只是对元组进行索引。这给了我一个 float
值。
所以这是一个简单的 one-line 函数,但它有助于创建一个函数,因为它为我们正在做的事情提供了一个清晰的名称。
下一步是将其应用于列表的每个元素。例如,您可以使用 list comprehension:
轻松做到这一点
my_floats = [hexdump_to_float(x) for x in my_hexdumps]
我在列表中有十六进制字符串的数据点。
我尝试将列表转换为字符串,然后再转换为字节数组。当我尝试将字节数组转换为只浮动它时 returns 一个值。
使用的代码是:
byteArrObj = bytearray(n, 'utf-8')
byteObj = bytes(byteArrObj)
byte8=bytearray.fromhex(b)
print(byte8)
floatvalue = struct.unpack('<f', byte8[:4])
这会生成一个元组,例如`(0.09273222088813782,)。
如何打印列表中的所有浮点值?
首先,让我们创建一个函数来转换其中一个值:
def hexdump_to_float(text):
return struct.unpack('<f', bytes.fromhex(text))[0]
通知:
我跳过了从你的代码中找到
byteArrObj
或byteObj
的步骤,因为它们对你的代码没有影响,也无助于解决问题。我使用类型
bytes
而不是bytearray
,因为我们不需要修改底层数据。 (这类似于使用tuple
而不是list
。)我不想对数据进行切片,因为我们已经知道只有 4 个字节,而且
struct.unpack
无论如何都会忽略缓冲区中的任何额外数据。为了从
struct.unpack
returns 的元组中获取值,我只是对元组进行索引。这给了我一个float
值。
所以这是一个简单的 one-line 函数,但它有助于创建一个函数,因为它为我们正在做的事情提供了一个清晰的名称。
下一步是将其应用于列表的每个元素。例如,您可以使用 list comprehension:
轻松做到这一点my_floats = [hexdump_to_float(x) for x in my_hexdumps]