如何针对霍夫曼算法将0和1转换为二进制然后返回?

时间:2019-04-09 13:03:05

标签: python binary binaryfiles huffman-code

当前,我正在编写霍夫曼算法,但是转换二进制部分时遇到问题。

程序的其余部分已经在工作。该程序可以从符号创建树,并可以创建代表符号的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?

1 个答案:

答案 0 :(得分:0)

您可以通过两个观察结果来编写字节转二进制的字符串方法:

  • 您可以使用str.format的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