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

时间:2019-04-16 10:24:08

标签: python arrays

我的二进制字符串为“ 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

2 个答案:

答案 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,)