Как преобразовать байтовый массив в строку? - PullRequest
0 голосов
/ 21 ноября 2018

Я только что закончил создание алгоритма сжатия Хаффмана.Я преобразовал сжатый текст из строки в байтовый массив с помощью bytearray ().Я пытаюсь распаковать мой алгоритм Хаффмана.Моя единственная проблема заключается в том, что я не могу преобразовать свой байтовый массив обратно в строку.Есть ли встроенная функция, которую я мог бы использовать для преобразования моего байтового массива (с переменной) обратно в строку?Если нет, то есть ли лучший способ конвертировать мою сжатую строку во что-то еще?Я попытался использовать byte_array.decode () и получил следующее:

print("Index: ", Index) # The Index


# Subsituting text to our compressed index

for x in range(len(TextTest)):

    TextTest[x]=Index[TextTest[x]]


NewText=''.join(TextTest)

# print(NewText)
# NewText=int(NewText)


byte_array = bytearray() # Converts the compressed string text to bytes
for i in range(0, len(NewText), 8):
    byte_array.append(int(NewText[i:i + 8], 2))


NewSize = ("Compressed file Size:",sys.getsizeof(byte_array),'bytes')

print(byte_array)

print(byte_array)

print(NewSize)

x=bytes(byte_array)
x.decode()

UnicodeDecodeError: кодек utf-8 не может декодировать байт 0x88 в позиции 0: недопустимый начальный байт

1 Ответ

0 голосов
/ 21 ноября 2018

Вы можете использовать .decode('ascii') (оставить пустым для utf-8).

print(bytearray("abcd", 'utf-8').decode())
>>> abcd

Источник: Преобразовать байты в строку?

...