Base64 — стандарт кодирования байтов при помощи только 64 символов (A-Z, a-z и 0-9 (62 знака) и 2 дополнительных символа, зависящих от системы реализации).
Одним байтом можно закодировать 256 значений (28 бит), в то время как Base64 только 64 (26 бит).
Из этого следует соотношение 28 + 28 + 28 = 26 + 26 + 26 + 26, т.е. каждые 3 исходных байта кодируются в 4 байта.
Можно вывести формулу:
[Кол-во байт в Base64] = ([Исходное кол-во байт] / 3) * 4 или [Кол-во байт в Base64] = 4 * [Исходное кол-во байт] / 3 или [Кол-во байт в Base64] = 4/3 * [Исходное кол-во байт]
Например: Файл размером 1500 байт в Base64 будет занимать 2000 байт (т.е. на 1/3 больше).
Рассмотрим обратную задачу: есть Base64-строка и нужно понять сколько это будет байтов при раскодировке. Из формул выше можно выразить исходное кол-во байт:
[Исходное кол-во байт] = 3/4 * [Кол-во байт в Base64] или [Исходное кол-во байт] = 0.75 * [Кол-во байт в Base64]
Например: Base64-строка размером 2000 байт, декодируется в 1500 байт (т.е. на 1/4 меньше);
Это не полная формула. Ещё длина закодированного сообщения кратна четырём, поэтому исходные сообщения с длиной 7, 8 и 9 байт после кодирования будут иметь одинаковую длину 12. Сообщение в конце добивается символами «=» до нужной длины.
В данном случае рассматривался модифицированный Base64, в котором опускается конечное заполнение символами =.
Основная цель просто оценить во сколько раз идет увеличение исходного размера при конвертации, а 1, 2, или 3 символа в конце погоды не делают.
Кстати,
7 дополняется до 8.
8 — не дополняется