Кодировка base64 - визуальное объяснение
Тай Люис из Lucidchart написал хорошую статью про base64 "Base64 Encoding: A Visual Explanation".
На сегодняшний день base64 используется при внедрении ресурсов в страницы с помощью протокола data:
, в source map'ах и там, где необходимо передавать бинарные данные по текстовому протоколу.
В статье описывается работа алгоритма base64 с хорошей визуализацией. В цикле верхнего уровня входной поток данных делится на группы по 24 бита (input groups), которые обрабатываются вложенным циклом. Во вложенном цикле каждая входная группа бьётся на группы по 6 битов. Каждой комбинации битов соответсвует определённый символ, которым кодируется полученная группа. При необходимости во внешнем цикле input group искусственно расширяется до 24 битов с помощью символа =
. Именно поэтому в конце base64 последовательности данных можно часто видеть =
.
В статье Тай рассказал ещё про пасхалку в Chrome, про которую я не знал. Если ввести в адресную строку chrome://dino
, то во весь вьюпорт браузера запустится игра с динозавром, которая доступна в обычном режиме тогда, когда нет доступа к сети (не забудьте нажать пробел). Эта игра хранит все свои ресурсы: изображение и звуки — в base64.
https://www.lucidchart.com/techblog/2017/10/23/base64-encoding-a-visual-explanation/