如何将字节数组值转换为浮点数 Python
How to convert byte array value to float In Python
我有一个列表 [142, 65, 110, 51] 它需要转换为类似于 ctypes
库中的 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)
。
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
转换为可以解压的字节对象。
我有一个列表 [142, 65, 110, 51] 它需要转换为类似于 ctypes
库中的 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)
。
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
转换为可以解压的字节对象。