如何从二进制字符串中获取字节数组?

我有二进制字符串,即“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


哈士奇WWW
浏览 169回答 2
2回答

红糖糍粑

您可以转换为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 structstruct.unpack('f', bitstring_to_bytes(s))>>>(88.0,)

翻过高山走不出你

从文档:使用unsigned char类型:import structdef 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python