当前,我正在编写霍夫曼算法,但是转换二进制部分时遇到问题。
程序的其余部分已经在工作。该程序可以从符号创建树,并可以创建代表符号的0和1字符串。但是现在我想将此字符串转换为二进制格式,然后再次将其转换回。目前,我正在使用此代码将字符串转换为二进制。
def toBytes(data):
b = bytearray()
for i in range(0, len(data), 8):
b.append(int(data[i:i+8]), 2)
return bytes(b)
我可以将此字符串转换为二进制格式,但不能将其转换回。 例如,当我在函数中插入“ 01111101011000”时,它将返回b'} \ x18'。如何将该二进制格式转换回我的0和1?
答案 0 :(得分:0)
您可以通过两个观察结果来编写字节转二进制的字符串方法:
b
类型说明符将整数转换为等价的1和0字符串。bytes
对象时,可以将其视为整数列表。
>>> def to_bin(b):
... return "".join("{:08b}".format(x) for x in b)
...
>>> b = b'}\x18'
>>> print(to_bin(b))
0111110100011000