为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哈士奇WWW 2022-01-11 17:12:28
我有二进制字符串,即“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,)


查看完整回答
反对 回复 2022-01-11
?
翻过高山走不出你

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)


查看完整回答
反对 回复 2022-01-11
  • 2 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信