Как пользоваться
- Выберите «Кодировать», чтобы превратить текст в Base62, или «Декодировать», чтобы получить текст из Base62.
- Выберите порядок алфавита, который используется в вашей системе: 0-9 A-Z a-z (по умолчанию) или 0-9 a-z A-Z.
- Введите или вставьте исходные данные либо откройте небольшой файл (примерно до 20 КБ).
- Скопируйте результат или скачайте его в виде файла.
Что такое Base62?
Base62 использует десять цифр, 26 заглавных и 26 строчных латинских букв. Это самый большой алфавит, состоящий только из букв и цифр, поэтому результат не нужно экранировать в URL, именах файлов, ключах баз данных и идентификаторах в коде. Каждый символ несёт около 5,95 бита, поэтому результат примерно в 1,34 раза больше исходных данных — почти так же компактно, как Base64, но без символов +, /, =, - и _.
Поскольку 62 не является степенью двойки, этот инструмент рассматривает все входные данные как одно большое число и переводит его в систему счисления с основанием 62, как в Base58 и Base36. Каждый ведущий нулевой байт записывается ведущим символом 0, чтобы он сохранился при обратном преобразовании. Объём входных данных ограничен примерно 20 КБ, потому что на больших данных вычисления замедляются.
Единого стандарта Base62 нет
В отличие от Base64, у Base62 нет RFC, а реализации различаются так, что их результаты несовместимы:
- Порядок алфавита. Этот инструмент предлагает
0-9A-Za-z(по умолчанию) и0-9a-zA-Z. В некоторых других библиотеках буквы стоят перед цифрами. - Ведущие нули. Одни реализации сохраняют по одному символу
0на каждый ведущий нулевой байт, как этот инструмент, другие отбрасывают их, а форматы фиксированной длины дополняют результат до заданной ширины. - Что кодируется. Многие функции Base62 кодируют целое число, например идентификатор в базе данных, а не последовательность байтов. Другие разбивают данные на блоки фиксированного размера.
Если строка из другой системы декодируется здесь в бессмыслицу, попробуйте другой вариант алфавита. Если это не помогает, скорее всего, та система использует другой метод.
Где используется Base62
Сервисы сокращения ссылок превращают автоинкрементный идентификатор в короткий код: семь символов Base62 покрывают более 3,5 триллиона значений. Сортируемые идентификаторы, например KSUID, используют форму Base62 фиксированной длины в 27 символов, а многие сервисы применяют Base62 для API-ключей и токенов, потому что такую строку целиком выделяет двойной щелчок и её можно вставить куда угодно. Чтобы преобразовать отдельное целое число, воспользуйтесь конвертером систем счисления или несколькими строками кода:
// JavaScript: целое число (BigInt) в Base62
const A = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function toBase62(n) {
let s = '';
do { s = A[Number(n % 62n)] + s; n /= 62n; } while (n > 0n);
return s;
}
toBase62(123456789n); // '8M0kX'
Спецификация
| Алфавит | 0-9 A-Z a-z |
|---|---|
| Размер результата | Около 134% (перевод большого числа) |
| Дополнение | Нет |
| Стандарт | Формального стандарта нет |
| Учёт регистра | Да |
Примеры
| Исходные данные (UTF-8) | Результат |
|---|---|
Hello, World! | 1wJfrzvdbtXUOlUjUf |
Base64.is | NWxjrFq4r3rv |
你好 | 19PqtKE1t |
Часто задаваемые вопросы
Безопасен ли Base62 для URL?
Почему моя строка Base62 декодируется в неправильный текст?
Реализации Base62 различаются порядком алфавита и методом. Попробуйте переключиться между алфавитами 0-9A-Za-z и 0-9a-zA-Z. Если не подходит ни один, строка, вероятно, получена из целого числа или другим алгоритмом.
Учитывает ли Base62 регистр букв?
Да. Заглавные и строчные буквы обозначают разные значения, поэтому строку Base62 нельзя переводить в верхний или нижний регистр.