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