Во сколько раз Base64 увеличивает размер в байтах

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 меньше);

Поделиться данной статьей через:  
Теги: , , ,

2 комментария

  1. Андерс:

    Это не полная формула. Ещё длина закодированного сообщения кратна четырём, поэтому исходные сообщения с длиной 7, 8 и 9 байт после кодирования будут иметь одинаковую длину 12. Сообщение в конце добивается символами «=» до нужной длины.

    • Naik:

      В данном случае рассматривался модифицированный Base64, в котором опускается конечное заполнение символами =.
      Основная цель просто оценить во сколько раз идет увеличение исходного размера при конвертации, а 1, 2, или 3 символа в конце погоды не делают.
      Кстати,
      7 дополняется до 8.
      8 — не дополняется

Добавить комментарий для Андерс Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.