UTILS.
100% в браузере
🔢

Кодирование и декодирование Base62

Преобразуйте целые числа или строки байтов в компактный URL-безопасный Base62 (0-9A-Za-z) и обратно, с поддержкой BigInt и вариантом алфавита GMP — в браузере.

— результат появится здесь —

Об этом инструменте

Инструмент Base62 кодирует числа и строки байтов в компактный 62-символьный алфавит 0-9A-Za-z и декодирует их обратно. Base62 популярен для коротких ID, URL-слагов и укороченных ссылок, поскольку остаётся URL-безопасным без символов +, / или =, которые использует Base64. Всё преобразование выполняется локально в вашем браузере с помощью JavaScript BigInt, поэтому сколь угодно большие значения точны, и ничего не загружается на сервер.

Режим целых чисел трактует ввод как целое произвольной точности (десятичное или hex с префиксом 0x): кодирование многократно делит на 62 и добавляет alphabet[remainder] в начало, а декодирование вычисляет Σ alphabet.indexOf(ch)·62^position. Байтовый режим трактует входные байты (текст UTF-8 или hex) как одно большое число big-endian и применяет то же преобразование по основанию 62, но также сохраняет ведущие нулевые байты в стиле Bitcoin-Base58: каждый ведущий байт 0x00 становится одним ведущим символом '0', так что обратные преобразования без потерь.

Стандартный алфавит упорядочивает цифры, затем прописные, затем строчные (0-9A-Za-z). Некоторые библиотеки — особенно построенные на GMP — упорядочивают цифры, строчные, затем прописные (0-9a-zA-Z), что даёт другой вывод для того же значения; переключатель алфавита позволяет соответствовать тому, который использует ваша система. Выберите направление, режим целых чисел или байтов, формат ввода для байтов и вариант алфавита.

Часто задаваемые вопросы

В чём разница между режимом целых чисел и байтовым режимом?
Режим целых чисел преобразует одно число произвольной точности (десятичное или 0x-hex) в строку Base62 и обратно в десятичное целое. Байтовый режим преобразует последовательность байтов (из текста UTF-8 или hex) как большое число big-endian и сохраняет ведущие нулевые байты как ведущие символы-нули алфавита, так что двоичные данные преобразуются туда-обратно точно.
Почему существует два алфавита?
Стандартный алфавит — 0-9A-Za-z (прописные перед строчными). Библиотеки на основе GMP используют 0-9a-zA-Z (строчные перед прописными). Одно и то же значение кодируется по-разному в каждом из них, поэтому переключатель позволяет взаимодействовать с тем порядком, который ожидают ваши другие инструменты.
Насколько большое число он может обработать?
Любого размера. Инструмент использует JavaScript BigInt, поэтому нет предела точности 2^53 — вы можете кодировать и декодировать целые числа и строки байтов произвольной длины точно, что необходимо для хешей, UUID и длинных идентификаторов.
Как обрабатываются ведущие нули в байтовом режиме?
Каждый ведущий байт 0x00 кодируется как один ведущий символ-ноль алфавита (как ведущая '1' в Base58). При декодировании каждый ведущий символ-ноль алфавита восстанавливает один байт 0x00, так что кодирование с последующим декодированием возвращает точную исходную последовательность байтов.

Больше инструментов