Как конвертировать между любыми двумя кодировками
- Вставьте строку в поле ввода. Если в поле Из выбрано Автоопределение, строка статуса покажет, что это, по мнению инструмента: «Определено: Base58 · Не то? Прочитать как [Base64] …».
- Если догадка неверна, нажмите одну из кнопок Прочитать как или выберите формат в поле Из сами.
- Выберите целевой формат в поле В. Форматы сгруппированы: текст, Base64, байты и числа, Base32, кодировки через большое число, Base85/Base91/Base45, а также почтовые, URL и устаревшие кодировки.
- Настройки каждого формата появляются под его панелью, например Алфавит для Base58 и Base62 или Дополнение (=) для Base32 и Base64.
- ⇄ Поменять местами переносит результат во ввод и меняет форматы местами. Скопировать результат и Скачать забирают результат, а Сохранить байты скачивает декодированные байты файлом.
Любое преобразование идёт через сырые байты: вход декодируется, а байты кодируются заново. Счётчик Байты под инструментом показывает, сколько их, и это часто самый быстрый способ убедиться, что ключ или хеш целый. Специализированные страницы из списка выше открывают этот же конвертер с заранее выбранными форматами.
Сравнение кодировок
| Кодировка | Алфавит | Размер результата | Накладные расходы | Где применяется |
|---|---|---|---|---|
| Hex / Base16 | 16 | 2 символа на байт | 100% | Хеши, отладка, дампы байтов |
| Base32 | 32 | 8 на 5 байтов | 60% | Секреты TOTP, onion-адреса, ID без учёта регистра |
| Base36 | 36 | ≈ 1,55 на байт | ≈ 55% | Короткие ID и числа без учёта регистра |
| Base45 | 45 | 3 на 2 байта | 50% | QR-коды (европейские сертификаты о вакцинации) |
| Base58 | 58 | ≈ 1,37 на байт | ≈ 37% | Bitcoin, Solana, IPFS |
| Base62 | 62 | ≈ 1,34 на байт | ≈ 34% | Короткие ссылки и ID |
| Base64 | 64 | 4 на 3 байта | 33% | Почта, JSON, data URI, JWT – почти всё |
| Ascii85 / Z85 | 85 | 5 на 4 байта | 25% | PDF, PostScript, Git, ключи ZeroMQ |
| basE91 | 91 | ≈ 1,23 на байт | 14–23% | Упаковка данных в печатный ASCII |
| Uuencode / xxencode | 64 | 4 на 3 байта плюс обрамление строк | ≈ 38% | Старые вложения в почте и Usenet |
Накладные расходы указаны для случайных данных; у кодировок через большое число они плавают на символ-другой в зависимости от значения. Base45 выглядит здесь расточительным, но в алфавитно-цифровом режиме QR-кода каждый из его 45 символов стоит 5,5 бита, и накладные расходы падают почти до 3%.
Вот одна и та же 5-байтовая строка Hello в каждой из них:
| Hex | Base32 | Base36 | Base45 | Base58 | Base62 | Base64 | Ascii85 | basE91 |
|---|---|---|---|---|---|---|---|---|
48656c6c6f | JBSWY3DP | 3yud78mn | %69 VDL2 | 9Ajdvzr | 5TP3P3v | SGVsbG8= | 87cURDZ | >OwJh>A |
Три способа устроить кодировку
Кодировки делятся на три группы, и группа объясняет бо́льшую часть их поведения.
Группы битов: hex, Base32, Base64, uuencode и xxencode. Размер алфавита – степень двойки, поэтому каждый символ несёт фиксированное число битов (4, 5 или 6). Кодирование быстрое, работает потоком, а длина результата зависит только от длины входа.
Фиксированные блоки: Base45 (2 байта в 3 символа) и семейство Base85 (4 байта в 5). Алфавит не степень двойки, поэтому небольшой блок переводится как число. Всё так же быстро и потоково, и длина снова определяется размером входа.
Большие числа: Base36, Base58 и Base62. Весь вход – одно число, записанное в новой системе счисления. Подходит алфавит любого размера, дополнения нет, но каждый байт влияет на каждый символ, ведущие нулевые байты требуют особой обработки, а затраты растут квадратично с размером. Этот конвертер сохраняет ведущие нули как ведущие нулевые цифры и ограничивает вход для таких кодировок 64 КБ.
basE91 стоит между группами: он читает по 13 или 14 бит, поэтому его длина немного зависит от содержимого.
Какую кодировку выбрать
- Программы общаются с программами: Base64 или Base64URL внутри URL и токенов. Он встроен в любой язык, и ничего настолько же повсеместно понятного нет.
- Значение читают, набирают или диктуют люди: Base32, лучше в варианте Крокфорда, или Base36. Оба не зависят от регистра, а Крокфорд ещё и избегает похожих букв.
- Короткие непрозрачные ID в URL: Base62 – для самой короткой строки из букв и цифр, Base58 – если её могут переписывать вручную, ведь в нём нет
0,O,Iиl. - QR-код: Base45 с алфавитно-цифровым режимом QR.
- На счету каждый байт, а канал – обычный ASCII: Ascii85 или Z85 для фиксированных блоков, basE91 – ещё на несколько процентов плотнее.
- Разглядывать байты: hex. Вдвое больше по размеру, зато каждый байт – два символа, которые можно прочитать.
- Этого требует устаревшая система: uuencode или xxencode, но ничего нового на них не делайте.
Сравнение hex, Base32, Base58 и Base85 подробнее разбирает компромиссы по сравнению с Base64.
Вопросы и ответы
Какая текстовая кодировка двоичных данных самая компактная?
Из распространённых – basE91 (около 23% накладных расходов на случайных данных), затем семейство Base85 (25%), затем Base64 (33%). Более компактные кодировки используют знаки препинания, которые приходится экранировать в JSON, HTML или shell, поэтому Base64 часто оказывается разумнее.
Какая кодировка лучше всего подходит для URL?
Base64URL для токенов, которые генерирует программа: он короткий и стандартизирован. Base62 или Base58 – когда в значении должны быть только буквы и цифры, Base32 или Base36 – когда оно должно пережить смену регистра. В Base45 и Base85 есть символы, требующие percent-encoding.
Почему длина результата в Base58, Base62 и Base36 скачет?
Они считают вход одним большим числом, поэтому длина зависит не только от числа байтов, но и от значения. Base64, Base32 и hex отображают фиксированные группы битов и для одинакового числа байтов всегда дают одинаковую длину.
Как автоопределение решает, что за строка у меня?
Оно проверяет вход на соответствие правилам каждого формата, от самых характерных (разделители вроде <~ или begin 644) до самых общих, и декодирует по первому совпадению. Короткая строка может быть корректной в нескольких форматах; кнопки Прочитать как позволяют выбрать другой вариант.
Защищают ли эти кодировки данные?
Нет. Любую из них кто угодно обратит без всякого ключа. Они делают байты печатными, но не скрывают их. См. статью кодирование и шифрование.