Как пользоваться
- Выберите «Кодировать», чтобы перевести текст в Base36, или «Декодировать», чтобы получить текст из Base36.
- Введите или вставьте входные данные либо откройте небольшой файл (примерно до 20 КБ).
- Если в результате нужны заглавные буквы, включите «Верхний регистр».
- Скопируйте результат или скачайте его в виде файла.
Что такое Base36?
Base36 записывает данные десятью цифрами и 26 буквами латинского алфавита: 0-9, а за ними a-z. Это самый большой алфавит, который можно составить из цифр и букв без учёта регистра, поэтому строки Base36 без потерь проходят через системы, которые меняют или игнорируют регистр. Каждый символ несёт около 5,17 бита, поэтому результат примерно в 1,55 раза больше входных данных — немного короче, чем у Base32.
Поскольку 36 не является степенью двойки, байты нельзя просто разрезать на группы бит. Вместо этого инструмент читает все входные данные как одно большое беззнаковое число и переводит его в систему с основанием 36 — так же, как это делает Base58. В числе ведущие нулевые байты потерялись бы, поэтому каждый из них записывается как ведущий 0 и восстанавливается при декодировании. На больших объёмах такая арифметика работает медленно, поэтому инструмент принимает данные примерно до 20 КБ.
Где используется Base36
- Короткие идентификаторы. Сервисы сокращения ссылок, номера заказов и коды обращений часто показывают числовой идентификатор из базы данных в системе с основанием 36. Например, Reddit использует основание 36 для идентификаторов постов и комментариев.
- Места, где регистр не учитывается. Имена DNS и некоторые файловые системы не различают регистр букв. Поэтому IPFS использует форму Base36 для некоторых идентификаторов в адресах шлюзов на поддоменах.
- Числа в коде. Основание 36 — наибольшее, которое большинство языков программирования поддерживают при преобразовании целых чисел без дополнительных библиотек.
Если регистр букв сохраняется и нужна самая короткая буквенно-цифровая строка, компактнее будет Base62.
Числа Base36 в программах
Эта страница кодирует байты. Чтобы перевести целое число, используйте встроенные функции вашего языка или конвертер систем счисления:
// JavaScript
(1000000).toString(36) // 'lfls'
parseInt('lfls', 36) // 1000000
123456789012345678901234567890n.toString(36) // BigInt для больших значений
# Python
int('lfls', 36) # 1000000
# встроенной функции для обратного преобразования нет
parseInt теряет точность для значений больше Number.MAX_SAFE_INTEGER; для больших значений накапливайте цифры в BigInt самостоятельно.
Спецификация
| Алфавит | 0-9 a-z |
|---|---|
| Размер результата | Около 155% (перевод большого числа) |
| Дополнение | Нет |
| Стандарт | Формального стандарта нет |
| Учёт регистра | Нет |
Примеры
| Исходные данные (UTF-8) | Результат |
|---|---|
Hello, World! | fg3h7vqw7een6jwwnzmp |
Base64.is | 76f8bz4veeatf7 |
你好 | 2h5exfqm65 |
Часто задаваемые вопросы
Учитывает ли Base36 регистр?
Нет. По умолчанию результат выводится в нижнем регистре, а параметр «Верхний регистр» переключает его на заглавные буквы. Декодер принимает любой регистр.
Почему другой инструмент выдаёт другой результат Base36?
У Base36 нет формального стандарта. Одни инструменты кодируют число, другие — байты, и ведущие нулевые байты они обрабатывают по-разному. Этот инструмент кодирует входные байты как одно большое число и записывает каждый ведущий нулевой байт как 0.