Base64 — для чего знаки «равно»?

Здравствуйте!

Для чего в конце конвертированной в base64 строки ставятся "=" / "=="? Убирая их, деконвертация проходит на ура. Можно ли "чистить" их? Спасибо.
  • Вопрос задан
  • 7183 просмотра
Пригласить эксперта
Ответы на вопрос 2
Base64 конвертирует блоками по 3 байта (создавая коды по 4 байта) :
- если длина исходного блока была кратна 3, то он закодируется нацело и знаков "=" не будет
- если длина исходного блока имела остаток 1 от деления на 3, то он закодируется в 2 байта (6 бит + 2 бита), и чтобы итоговый код был длиной кратен 4, будет в конце дописано "=="
- если длина исходного блока имела остаток 2 от деления на 3, то он закодируется в 3 байта (6 бит + 6 бит + 4 бита), и чтобы итоговый код был длиной кратен 4, будет в конце дописано "=".

Отбрасывать хвосты нежелательно, т.к. Вы не можете быть уверены, что декодирующий алгоритм примет последний не кратный 4 блок.
Ответ написан
Комментировать
ghaiklor
@ghaiklor
NodeJS TechLead
Это суффиксы.
Используются только символы латинского алфавита в верхнем и нижнем регистре — символы (A—Z, a—z), цифры (0—9), и символы «+» и «/», с символом «=» в качестве специального кода суффикса.
Можно ли их чистить? Зачем? Сэкономить пару Кб?)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы