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

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

Для чего в конце конвертированной в base64 строки ставятся "=" / "=="? Убирая их, деконвертация проходит на ура. Можно ли "чистить" их? Спасибо.
  • Вопрос задан
  • 9868 просмотров
Пригласить эксперта
Ответы на вопрос 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), и символы «+» и «/», с символом «=» в качестве специального кода суффикса.
Можно ли их чистить? Зачем? Сэкономить пару Кб?)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
07 мая 2024, в 22:37
25000 руб./за проект
07 мая 2024, в 22:24
7000 руб./за проект
07 мая 2024, в 21:57
600 руб./за проект