@Eitewi

Почему base64 увеличивает длину строки?

есть хекс 6285692541a3d247155c75df 24 символа
после base64url NjI4NTY5MjU0MWEzZDI0NzE1NWM3NWRm 32 символа
Почему при переходе из 16-значной системы в 64-значною длина строки увеличилась, а не уменьшилась?
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
Из Википедии:
Каждые 3 исходных байта кодируются 4-мя символами (увеличение на ¹⁄₃).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Потому что вы закодировали текстовое представление этой последовательности, которое занимает в 2 раза больше байт, чем сама исходная последовательность.
Если закодировать саму 12-байтную последовательность в base64, получится YoVpJUGj0kcVXHXf (16 символов).
Ответ написан
Комментировать
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Почему при переходе из 16-значной системы в 64-значною длинна строки увеличилась, а не уменьшилась?


Потому что на самом деле у вас переход из 256-ричной системы в 64-ричную. Base64 позволяет кодировать любые строки, а не только из 16 символов 0-9,a-f.

Если вы хотите вашу строку интерпретировать как 16 запись, то вам надо ее сначала из hex записи раскодировать. Гуглите HexToBase64, hexToAscii или HexDecode. Какая нибудь такая функция наверняка есть в библиотеке. Или ее можно самостоятельно написать, превращая по 2 символа в 1.

Да, только это все возможно только если у вас длина исходной строки четная.
Ответ написан
Ваш ответ на вопрос

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

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