Все виды Base в кодировании: от битов до эмодзи

В разработке под «Base» чаще всего подразумевают две разные вещи: математические системы счисления (основание числа) и binary-to-text encoding — алгоритмы превращения бинарных данных в печатный текст. Разберем все популярные варианты.


1. Системы счисления (математические основы)


· Base 2 (Двоичная) — алфавит 0,1. Сердце всей цифровой техники.

· Base 8 (Восьмеричная) — 0–7. Классика для прав доступа в Linux (chmod 755) и старых ЭВМ.

· Base 10 (Десятичная) — 0–9. Человеческая система, используется в математике и UI.

· Base 16 (Шестнадцатеричная / Hex) — 0–9, A–F. Стандарт для цветов (#FF0000), MAC-адресов, хешей и отладки памяти.


---


2. Текстовые кодировки бинарных данных (Binary-to-Text)


Здесь алфавит расширяют, чтобы передавать байты через каналы, которые плохо держат «бинарный мусор» (почта, JSON, URL).


· Base16 (Hex) — формально та же 16-ричная система, но как кодировка удваивает размер байта (1 байт → 2 символа). Проста и наглядна.

· Base32 (алфавит A–Z, 2–7) — регистронезависим. Используется в TOTP-ключах (Google Authenticator), DNS-записях и .onion-адресах (Tor v2/v3). Чуть менее эффективен, чем Base64, но безопаснее при ручном вводе.

· Base64 — самый популярный. Алфавит: A–Z, a–z, 0–9, +, / (и = для паддинга). Работает везде: вложения в email (MIME), JSON Web Tokens (JWT), вставка картинок в CSS/HTML (data:image).

Вариант: Base64URL (заменяет + на -, / на _) — безопасен для параметров в URL и заголовков.

· Base58 — урезанный вариант Base62. Убирает похожие символы: 0 (ноль), O (о), I (ай), l (эль), а часто и + с /. Создан для криптовалютных адресов (Bitcoin, Ethereum), чтобы минимизировать ошибки при копировании.

· Base62 — алфавит 0–9, A–Z, a–z (без спецсимволов). Идеален для генерации коротких ссылок (аналог YouTube, Bitly), так как не требует экранирования.

· Base85 (он же Ascii85) — использует 85 печатных символов ASCII. Применяется в Adobe PostScript и PNG (кодировка данных). Дает выигрыш в размере ~25% по сравнению с Base64 (4 байта → 5 символов).

· Base91 — алфавит из 91 символа (все печатные ASCII, кроме пробела и кавычек). Еще эффективнее Base85, но встречается реже (используется в протоколах для микроконтроллеров и сжатых данных).

· Base100 — алфавит состоит из эмодзи (😂💯 и т.д.). Используется как забавный инструмент для стеганографии или чтобы спрятать текст в сообщении, визуально состоящем из смайликов.


---


3. Итоговая таблица эффективности (сколько байт в 1 символе)


Кодировка Эффективность (байт/символ) Где применяется

Base16 0.5 (очень плохо) Отладка, хеши

Base32 0.625 TOTP, Tor

Base64 0.75 JWT, email, веб

Base85 ~0.8 PDF, PNG

Base91 ~0.83 Редкие протоколы


Выбор всегда зависит от задачи: нужна ли безопасность ручного ввода (Base58), совместимость с URL (Base64URL) или максимальная плотность (Base91/85).