首页 > 解决方案 > 如何将 0 和 1 转换为二进制并返回用于 Huffman 算法?

问题描述

目前,我正在编写 Huffman 算法,但在转换二进制部分时遇到问题。

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

标签: pythonbinarybinaryfileshuffman-code

解决方案


您可以通过使用两个观察来编写字节到二进制字符串的方法:

  • 您可以使用 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

推荐阅读