我正在编写一个霍夫曼编码程序。到目前为止,我只写了压缩部分:正如预期的那样,它接受我想要压缩的文本,为每个字符创建一个代码,并用各自的代码替换每个字符。这是我的字符串格式的压缩文本-我使用以下代码将此字符串转换为字节数组:
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
然后,我通过执行字节(byte_array(将byte_aarray保存到.bin文件中。我想现在能够打开这个二进制文件,读取里面的byte_array,并将其转换回压缩文本的字符串格式,以便能够解压缩它。问题是,每当我打开并读取这个二进制文件时,我都会得到这样的东西:
b’\xad";\xfdK\xa8w\xc1\xec\xcb\xe5(\x1f\x1f\x92'
我该如何将其转换回压缩文本的字符串格式?
如果s
是该字节字符串:
for x in s:
print(f'{x:08b}')
您可以使用0和1的字符串执行您喜欢的操作,而不是print
。
通过0和1个字符的字符串进行编码和解码是不必要的低效。您应该直接使用位运算符(<<
、>>
、|
、&
(来组装和反汇编字节。