Строка 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)

Тем не менее, какая кодировка подходит для вашего текста, зависит от того, как он был создан в первую очередь. Если вы шифруете, вы можете исправить свой код шифрования так, чтобы он не создавал текст, а производил байты напрямую.

Другие вопросы по тегам