Строка Python с двоичной кодировкой base64 данных дает TypeError
Я борюсь со следующей проблемой:
У меня есть массив со следующими двоичными данными (после шифрования):
data = '\x03×ÿ\x7f*J\x9aÖ¯AÀM|ü{R2+M°ø2\x83.\x1f@µ³U¡VT'
Я хочу, чтобы base64 кодировал его.
Когда я делаю
binascii.b2a_base64(data)
я собираюсь TypeError: a bytes-like object is required, not 'str'
Мне очень нужен совет, как обращаться с такими данными. Пожалуйста помоги!
Обновление: я исправил тип данных, конечно - моя проблема связана с одной строкой
1 ответ
У вас нет двоичных данных, у вас есть текстовые строки.
Сначала преобразуйте текст в байты; Вы можете сделать это путем кодирования. Похоже, что вы создали кодовые точки Unicode, которые соответствуют один на один с латинскими байтами 1, так что вы можете кодировать в этот кодек:
for value in array:
bytes_value = value.encode('latin-1')
base64_encoded = binascii.b2a_base64(bytes_value)
Тем не менее, какая кодировка подходит для вашего текста, зависит от того, как он был создан в первую очередь. Если вы шифруете, вы можете исправить свой код шифрования так, чтобы он не создавал текст, а производил байты напрямую.