如何将字节数组转换回字符串?

How to Convert Byte Array back into string?

我正在编写霍夫曼编码程序。到目前为止,我只写了压缩部分:正如预期的那样,它获取我要压缩的文本,为每个字符创建一个代码,并用各自的代码替换每个字符。这是我的字符串格式的压缩文本 - 我使用以下代码将此字符串转换为字节数组:

def make_byte_array(self, padded_text):

        byte_array = bytearray()
        for i in range(0, len(padded_text), 8):
            byte_array.append(int(padded_text[i:i + 8], 2))
        
        return byte_array

然后我通过执行 bytes(byte_array) 将 byte_array 保存到 .bin 文件中。我希望现在能够打开这个二进制文件,读取其中的 byte_array 并将其转换回我的压缩文本的字符串格式,以便能够解压缩它。问题是每当我打开并读取这个二进制文件时,我都会得到这样的信息:

b'\xad\xfdK\xa8w\xc1\xec\xcb\xe5)\x1f\x1f\x92'

我该如何将其转换回压缩文本的字符串格式?

如果 s 是那个字节串:

for x in s:
    print(f'{x:08b}')

而不是 print,您可以用 0 和 1 的字符串做任何您喜欢的事情。

通过 0 和 1 字符的字符串进行编码和解码是不必要的低效率。您应该直接使用位运算符 assemble 和 disassemble 字节(<<>>|&)。