Как три байта превращаются в четыре символа

Base64 нужен для передачи любых данных через системы, которые надёжно работают прежде всего с текстом: например, через некоторые почтовые форматы или текстовые протоколы. Он не сжимает файл, а записывает его байты в виде ограниченного набора печатных символов — букв, цифр и нескольких знаков.

Механизм устроен так: каждые три исходных байта разбиваются на четыре группы по шесть бит. Каждую группу заменяют одним символом из таблицы Base64. Поэтому вместо трёх байтов получается четыре текстовых символа: объём записи возрастает примерно на треть. Если исходные данные не делятся на три байта без остатка, в конце могут появиться знаки `=` для выравнивания.

Совместимость в обмен на размер

Текстовые символы легче пропустить через системы, которые могут неверно обработать произвольные двоичные значения. При получении четыре символа снова превращаются в исходные три байта. Base64 — это обратимое кодирование, а не шифрование: оно не скрывает содержимое и не делает его защищённым.

Цена заметна, когда кодируют крупные файлы или встраивают изображения прямо в текстовый документ. К самому увеличению могут добавиться переносы строк и служебное оформление конкретного формата. Поэтому Base64 полезен там, где важнее совместимость передачи, но для хранения и обычной передачи файла без такой необходимости он чаще означает лишний объём данных.