如何在Python中将字节数组值转换为浮点值

2024-09-23 20:17:27 发布

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

我有一个列表[142,65,110,51],它需要从ctypeslib转换为类似于c_float的浮点。我不知道c_float的逻辑

我正在尝试使用模块struct

import struct

x = [142, 65, 110, 51]
ans = 0
for i, v in enumerate(x):
    ans += (v << (8 * i))

combined = ans  # 862863758

buf = struct.pack("d", combined)

fl = struct.unpack("ff", buf)
print(fl)

我得到(-32768.0, 25.21441650390625),但我需要一个浮点值

简而言之,我想要类似[142, 65, 110, 51] => 0.0003232(some float value)的东西


Tags: 模块inimport列表for逻辑floatstruct
2条回答
import struct

x =  [142, 65, 110, 51]
ans = 0
for i, v in enumerate(x):
    ans += (v << (8 * i))

combined = ans  # 862863758

buf = struct.pack("I", combined)
fl = struct.unpack("f", buf)
print(fl[0])  #   > 5.54733148305786e-08

使用f而不是ff

import struct

x = [142, 65, 110, 51]
fl = struct.unpack("f", bytes(x))
print(fl)

它打印(5.54733148305786e-08,)

请注意,您可以完全跳过ans变量,直接将x转换为可以解压缩的字节对象

相关问题 更多 >