我有二进制字符串,即“00000000000000001011000001000010”。我想将此字符串转换为字节数组并从该字节数组中获取相应的浮点值。如何在python中完成?我尝试使用struct.unpack().def bitstring_to_bytes(s): v = int(s, 2) b = bytearray() while v: b.append(v & 0xff) v >>= 8 return bytes(b[::-1])>>> s="00000000000000001011000001000010">>> print(bitstring_to_bytes(s))>>> B>>> struct.unpack('>f',B)还指导我从字节数组中获取浮点值。最后,我们应该得到 float value=88.0
2 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
您可以转换为int并使用以下to_bytes方法:
s="00000000000000001011000001000010"
def bitstring_to_bytes(s):
return int(s, 2).to_bytes(len(s) // 8, byteorder='big')
print(bitstring_to_bytes(s))
>>>b'\x00\x00\xb0B'
并获得浮动:
import struct
struct.unpack('f', bitstring_to_bytes(s))
>>>(88.0,)
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
从文档:
使用unsigned char类型:
import struct
def bitstring_to_bytes(s):
v = int(s, 2)
b = bytearray()
while v:
b.append(v & 0xff)
v >>= 8
return bytes(b[::-1])
s = "00000000000000001011000001000010"
r = bitstring_to_bytes(s)
print(struct.unpack('2B', r))
输出:
(176, 66)
添加回答
举报
0/150
提交
取消