我的二进制字符串为“ 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值= 88.0
答案 0 :(得分:1)
来自docs:
使用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)
答案 1 :(得分:1)
您可以转换为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,)