Как пользоваться
- Введите или вставьте текст в поле ввода.
- Все кодировки обновляются по мере ввода: двоичная, восьмеричная, десятичная, hex, варианты Base32, от Base36 до Base91, а также uuencode и xxencode.
- Сравните результаты, чтобы найти самый короткий или тот, в котором есть только допустимые для вас символы.
- Нажмите «Копировать» рядом с нужным результатом.
Все кодировки из одного поля ввода
Каждая кодировка на этой странице превращает одни и те же байты в свой набор символов. Сравнение рядом — самый быстрый способ выбрать кодировку для проекта, распознать строку, найденную в логе или конфигурационном файле, или разобраться, чем отличаются форматы. Текст кодируется как байты UTF-8, поэтому кириллическая буква или буква с диакритическим знаком занимает два байта, а китайский иероглиф — три. Всё работает в вашем браузере.
- Числа для каждого байта. Двоичная, восьмеричная и десятичная записи представляют каждый байт отдельно. Их легко читать, но они получаются длинными.
- Группы битов. В hex, Base32 (вместе с Base32hex, Crockford и z-base-32), Base64 и Base64URL каждый символ несёт фиксированное число битов, поэтому длина результата зависит только от длины входных данных.
- Большие числа. Base36, Base58 и Base62 рассматривают все входные данные как одно большое целое число. В зависимости от значения длина может отличаться на один символ, а ведущие нулевые байты сохраняются как ведущие символы.
- Блоки. Base45 превращает 2 байта в 3 символа, Ascii85, Z85 и Base85 — 4 байта в 5 символов, а Base91 упаковывает 13 или 14 битов в каждую пару символов.
- Строки. uuencode и xxencode — старые форматы электронной почты и Usenet, которые записывают данные строками, причём каждая строка начинается с символа длины.
Сравнение размера результата
Сколько символов нужно каждой кодировке на один входной байт и какой длины становится 32-байтовое значение, например хеш SHA-256 или открытый ключ Ed25519:
| Кодировка | Символов на байт | Длина для 32 байт |
|---|---|---|
| Base16 (hex) | 2,0 | 64 |
| Base32 | 1,6 | 56 (52 без дополнения) |
| Base36 | около 1,55 | 49 или 50 |
| Base45 | 1,5 | 48 |
| Base58 | около 1,37 | 43 или 44 |
| Base62 | около 1,34 | 42 или 43 |
| Base64 | около 1,33 | 44 (43 без дополнения) |
| Base85 | 1,25 | 40 |
| Base91 | около 1,23 | 39 или 40 |
Переход от hex к Base64 сокращает длину на треть. Дальнейший переход от Base64 к Base91 экономит лишь около 8%.
Какую кодировку выбрать
Самый короткий результат не всегда лучший. В Ascii85 могут встречаться кавычки и обратные косые черты, а в Base91 — двойные кавычки, поэтому в JSON, HTML или командах оболочки их может понадобиться экранировать. Подумайте, где будет использоваться строка:
- URL и имена файлов: Base64URL, Base58 или Base62.
- Чтение вслух или ввод вручную: Crockford Base32 или Base58, в которых нет похожих друг на друга символов.
- Системы, не учитывающие регистр: hex, Base32 или Base36.
- QR-коды: Base45, в котором используются только символы буквенно-цифрового режима QR.
- Компактный текст в PDF, Git или ZeroMQ: Ascii85, Base85 или Z85.
- Максимальная совместимость: Base64, который поддерживают почти все языки и платформы.
Часто задаваемые вопросы
Какая кодировка даёт самый короткий результат?
Из кодировок на этой странице самая компактная — Base91, около 1,23 символа на байт, за ней идут Ascii85, Z85 и Base85 с 1,25 символа. Base64 требует около 1,33 символа, но поддерживается гораздо шире, поэтому обычно его и выбирают по умолчанию.
Почему длина результатов Base58 и Base62 различается при входных данных одного размера?
Эти кодировки преобразуют все входные данные как одно большое число, поэтому длина зависит от его значения, а не только от размера. Кроме того, каждый ведущий нулевой байт добавляет один ведущий символ. Hex, Base32 и Base64 всегда дают одинаковую длину для одинакового числа байтов.
Можно ли декодировать строку на этой странице?
Почему двоичный результат такой длинный?
В двоичной записи на каждый байт приходится 8 цифр плюс разделители, поэтому она как минимум в четыре раза длиннее hex. Она нужна, чтобы рассматривать отдельные биты, а не для хранения или передачи данных.
Отправляется ли мой текст на сервер?
Нет. Все кодировки вычисляются кодом JavaScript в вашем браузере, и текст не покидает ваше устройство.