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

Преобразуйте целые числа между любыми системами счисления от 2 до 64. Двоичная, восьмеричная, десятичная, шестнадцатеричная, base36, base58 и base64 одновременно, с поддержкой произвольной точности BigInt.

Преобразуйте целое число между любыми двумя системами счисления от 2 до 64. Введите значение, выберите систему, в которой оно записано, и каждое привычное представление обновится мгновенно. Преобразование использует JavaScript BigInt, поэтому числа намного больше 2^53 сохраняют полную точность.

Понимание позиционных систем счисления

Что на самом деле означает система счисления

В позиционной системе основание (радикс) говорит, сколько стоит каждый разряд. В системе 10 цифры 237 означают 2×100 + 3×10 + 7×1. В системе 16 та же строка цифр означает 2×256 + 3×16 + 7 = 567. При преобразовании само число не меняется — меняется только запись.

Алфавит цифр

Системе N нужно N различных символов. Цифры 0-9 покрывают первые десять, затем подключаются буквы: a — это 10, b — 11 и так далее до z на 35. Выше 36 алфавит продолжается заглавными буквами, а в конце — символами + и /, именно в таком порядке работает этот инструмент. Системы до 36 трактуются без учёта регистра, поскольку это почти повсеместное соглашение; выше 36 регистр становится значимым.

Где встречается каждая система

  • Система 2 напрямую отображается на аппаратуру. Содержимое регистров, битовые маски и флаги прав доступа проще всего анализировать в двоичном виде.
  • Система 8 группирует биты по три, именно поэтому unix-права доступа вроде 755 — восьмеричные.
  • Система 16 группирует биты по четыре, поэтому одна шестнадцатеричная цифра равна одной тетраде. Адреса памяти, цветовые коды и хеши используют её.
  • Система 36 — самая плотная система, переживающая регистронезависимые среды вроде DNS-меток.
  • Система 58 — это система 62 минус легко спутываемые символы: 0, O, I и l. Её используют адреса Bitcoin и многие сервисы коротких ссылок.
  • Система 64 кодирует три байта в четыре печатных символа и является стандартным способом передавать двоичные данные через текстовые каналы.

Точность

Нативные числа JavaScript теряют точность выше 2^53. Этот конвертер работает целиком с BigInt, поэтому 200-значное десятичное значение преобразуется в двоичное без молчаливого округления. Отрицательные значения поддерживаются; ведущий минус сохраняется во всех системах.

Примечание об открытом коде: преобразование реализовано на нативном API JavaScript BigInt. Сторонние числовые библиотеки не используются.

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

Почему base 58 пропускает некоторые символы?
Base 58 намеренно отбрасывает 0, O, I и l, поскольку они легко спутать в печатном или рукописном виде. Это делает адреса безопаснее для ручного переписывания, и именно поэтому Bitcoin её перенял.
Совпадает ли здешняя base64 с base64 для вложений электронной почты?
Нет. Этот инструмент трактует base 64 как позиционную систему счисления для одного целого числа. Кодирование вложений (RFC 4648) работает с потоками байтов и добавляет дополнение символом '='. Для этого используйте инструмент Base64.
Могу ли я преобразовать очень большие числа?
Да. Всё проходит через BigInt, поэтому сотни цифр преобразуются точно. Нет молчаливого округления на 2^53, как было бы с обычными числами JavaScript.
Ввод зависит от регистра?
Для систем до 36 — нет: 'FF' и 'ff' оба означают 255 в шестнадцатеричной. Начиная с системы 37 заглавные и строчные — разные символы, поэтому регистр важен.
Как преобразовать отрицательное число?
Просто поставьте перед ним знак минус. Знак переносится во все целевые системы. Дополнительный код — отдельная концепция и здесь не применяется.
Что-нибудь отправляется на сервер?
Нет. Преобразование выполняется целиком в вашем браузере, поэтому введённые значения никогда не покидают вашу машину.