Задать вопрос

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

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽