Инструменты
Руководства

Конвертер систем счисления

Конвертация

Перевод целых чисел между системами счисления 2–62 через BigInt, без потери точности для больших чисел.

100 % на клиенте Без бэкенда
→
Вывод
Десятичная
На этой странице

Что такое конвертер систем счисления?#

Любое целое число — это одно и то же число; меняется лишь его написание. 255 в десятичной, ff в шестнадцатеричной, 11111111 в двоичной и 377 в восьмеричной — четыре строки для одной и той же величины. Конвертер систем счисления переводит одно написание в другое — и причина, почему для этого нужен полноценный инструмент, а не parseInt, в том, что JavaScript Number после 2^53 (около 16 десятичных цифр) без предупреждения теряет точность, поэтому преобразование 64-битного идентификатора вроде 18446744073709551616 через обычный Number вернёт вам другое число без единого предупреждения.

Эта страница полностью на BigInt, поэтому целое число произвольного размера сохраняет полную точность при любом преобразовании. Поддерживаются основания 2–62 с каноническим алфавитом цифр: 0-9, затем a-z, затем A-Z. Для удобства основания 2–36 нечувствительны к регистру (можно набрать FF для hex 255), а основания 37–62 чувствительны к регистру — потому что в системе по основанию 62 строчная a и заглавная A — это две разные цифры (10 и 36).

Как пользоваться#

  1. Введите Значение, которое нужно преобразовать. При загрузке там 255.
  2. Укажите Из системы — основание, в котором записано ваше значение (в выпадающем списке 2–62; по умолчанию 10, десятичная).
  3. Укажите В систему — нужное основание (по умолчанию 16, шестнадцатеричная). Стрелка между ними — лишь визуальная подсказка.
  4. Поле Вывод показывает преобразованное написание вживую, а расположенная ниже строка Десятичная — то же значение в системе по основанию 10, что удобно для самопроверки при конверсии между двумя непривычными системами.
  5. Пример перезагружает значение по умолчанию, Очистить опустошает поле. Недопустимая для выбранного основания цифра отражается в строке состояния (набор 8 в восьмеричной системе или g в шестнадцатеричной не даст молчаливого мусора).

Ключевые возможности#

  • Точность BigInt. Преобразование идёт на целых числах произвольной точности, поэтому 2^64 и больше гоняются туда-обратно без потерь. Здесь нет обрыва на 2^53 и нет приближений с плавающей точкой.
  • Основания 2–62. Покрывает двоичную, восьмеричную, десятичную, шестнадцатеричную, base32, base36, наборы в стиле base58 и полную base62 — диапазон, который реально используется в системах.
  • Разбор с учётом регистра. Основания 2–36 для удобства принимают любой регистр; в основаниях 37–62 регистр существенен, поэтому a и A остаются разными цифрами, как и требует канонический 62-символьный алфавит.
  • Допускаются символы подчёркивания. Можно вставить 1_000, и это прочитается как 1000 — то же соглашение о читаемости, что и во многих языках программирования.
  • Учитывается знак. Отрицательные значения преобразуются корректно; минус сохраняется при любом основании.

Разбор примера#

Со значением по умолчанию 255, Из системы 10, В систему 16 панель покажет:

Вывод:      ff
Десятичная: 255

Переключите В систему на 2 и получите 11111111 — восемь бит, значение, которое точно помещается в один байт; именно поэтому ff так часто встречается в цветовых кодах и дампах памяти.

Настоящая причина использовать BigInt проступает на 64-битном значении. Введите 18446744073709551616 (это 2^64), Из системы 10, В систему 16:

Вывод:      10000000000000000
Десятичная: 18446744073709551616

Это 1 и шестнадцать нулей — ровно 2^64 в hex. Конвертер на JavaScript Number округлил бы ввод до 18446744073709552000 ещё до начала работы, и вы бы этого не заметили. Прогоните обратное преобразование — Из системы 16 / В систему 10 — и исходное десятичное значение вернётся неизменным; это и есть тест, доказывающий, что точность не потеряна.

FAQ#

Почему FF работает в hex, но не в системе по основанию 62?#

Основания 2–36 делят один буквенный диапазон (a–z, он отображается в 10–35), поэтому регистр не важен и FF = ff = 255. Начиная с основания 37 алфавиту не хватает 26 букв, и он распространяется на заглавные: a=10, b=11 … z=35, A=36, B=37 … Z=61. Как только задействованы оба регистра, a и A — разные цифры, поэтому разборщик обязан сохранять регистр.

Что будет, если ввести цифру, недопустимую для основания?#

Вы получите понятную ошибку, а не неверный ответ. Набор 8 или 9 при Из системы 8 (восьмеричная) либо g при Из системы 16 (шестнадцатеричная) отвергается, потому что эти символы не являются допустимыми цифрами в таком основании. Строка состояния укажет недопустимый символ.

Зачем нужна строка Десятичная, если я преобразую в другое основание?#

Потому что десятичная — это система, в которой человек мыслит, и естественная основа для самопроверки. Если вы переводите q из base-58 в base-16 и видите 1a, строка Десятичная (26) позволит убедиться: «да, ~58-й символ действительно означал двадцать шесть» — без арифметики вручную.

Поддерживаются ли дробные числа вроде 3.14?#

Нет — этот конвертер работает только с целыми числами. Преобразование дробной части в другую систему счисления — отдельная задача (в большинстве оснований оно даёт бесконечные периодические разложения, как 1/3 в десятичной), и молчаливо обрезать его было бы вводящим в заблуждение. Для целых значений любого размера преобразование точное и мгновенное.