Шаг 110.
Python: сборник рецептов.
Кодирование и обработка данных. Кодирование и декодирование в Base64

    На этом шаге мы рассмотрим особенности реализации такого кодирования.

Задача

    Вам нужно декодировать или закодировать бинарные данные, используя кодировку Base64.

Решение

    В модуле base64 есть две функции, которые делают именно то, что вам нужно: b64encode() и b64decode(). Например:

>>> # Какие-то байтовые данные 
>>> s = b'hello'
>>> import base64
>>> # Закодировать в Base64 
>>> a = base64.b64encode(s)
>>> a
b'aGVsbG8='
>>> # Декодировать из Base64 
>>> base64.b64decode(a) 
b'hello'
>>>


Обсуждение

    Кодировка Base64 предназначена только для использования с байториентированными данными, такими как байтовые строки и байтовые массивы. Более того, вывод процесса кодирования всегда будет байтовой строкой. Если вы смешиваете данные в Base64 с текстом в Unicode, вам придется выполнить дополнительный шаг для декодирования. Например:

>>> a = base64.b64encode(s).decode('ascii')
>>> a 
'aGVsbG8='
>>>

    При декодировании Base64 могут быть предоставлены и байтовые строки, и текстовые строки в Unicode. Однако строки Unicode могут содержать только символы ASCII.

    На следующем шаге мы рассмотрим чтение и запись бинарных массивов структур.




Предыдущий шаг Содержание Следующий шаг