§

Options

§

Двійкова (основа 2)

§

Вісімкова (основа 8)

§

Десяткова (основа 10)

§

Шістнадцяткова (основа 16)

§

Власна основа

Конвертація систем числення — щоденне завдання для українських розробників вбудованих систем, кібербезпеки та системного програмування. Адреси пам'яті у відладчиках, бітові маски в системних викликах ядра, кольорові коди у форматі hex та права доступу Unix chmod — все це потребує переключення між основами числення. Цей конвертер виконує механічну роботу, щоб інженери витрачали час на інтерпретацію, а не на арифметику.

Як працює конвертація систем числення

Кожна позиційна система числення представляє значення як суму цифр, помножених на степені основи. Перемикання основ означає переписування того самого значення відносно іншого ряду степенів.

  1. Перевірка алфавіту введення. Кожна основа приймає певний набір цифр. Двійкова приймає 0 і 1; вісімкова — 0-7; десяткова — 0-9; hex — 0-9 та A-F. Символ поза вибраним алфавітом відображає вбудовану помилку до запуску будь-якої конвертації.
  2. Розбір значення. Для значень, що поміщаються у JavaScript Number (до 2^53-1), інструмент викликає parseInt(text, base). Вище цієї межі він переходить на BigInt, щоб конвертація залишалася точною для довільно великих цілих чисел.
  3. Повторний вивід у кожній цільовій основі. Розібране значення конвертується у кожну вихідну основу через Number.prototype.toString(base) або BigInt.prototype.toString(base). Чотири стандартні панелі (двійкова, вісімкова, десяткова, hex) та панель власної основи оновлюються разом.
  4. Застосування форматування. Перемикач префіксу додає 0b, 0o або 0x на початок двійкового, вісімкового та hex-виводу. Групування цифр вставляє підкреслення кожні чотири двійкові цифри та кожні дві hex-цифри. Перемикач регістру hex вибирає верхній або нижній регістр для A-F.
  5. Синхронізація між панелями в реальному часі. Редагування будь-якої панелі запускає відкладену на 100 мс повторну конвертацію, що оновлює інші панелі. Панель, у якій ви вводите, вважається першоджерелом при кожному натисканні клавіші.

Навіщо використовувати конвертер систем числення

  • Читання дампів пам'яті. Відладчики, дизасемблери та переглядачі core-дампів показують адреси та значення регістрів у hex. Переведення їх у десяткову дозволяє порівнювати з лічильниками, розмірами та зсувами, повідомленими в інших місцях того самого трейсу.
  • Робота з кольоровими кодами. CSS, дизайнерські інструменти та формати зображень записують кольори у шістнадцяткових трійках, наприклад #d2511a. Конвертація кожної пари у десяткову перетворює той самий колір у форму rgb(210, 81, 26), якої очікує ваш підбирач кольорів або перевірка доступності.
  • Декодування прав доступу до файлів. Значення Unix chmod записуються у вісімковій системі: 755 означає rwxr-xr-x після перекладу кожної вісімкової цифри у три двійкові біти. Конвертер показує це відображення за один крок, щоб ви могли перевірити набір прав без звернення до man-сторінки.
  • Налагодження бітових прапорів. Мережеві протоколи, системні виклики ядра та апаратні регістри пакують багато булевих прапорів в одне ціле число. Читання числа у двійковій системі одразу показує, які біти встановлені, що потрібно при пошуку причини, чому прапор не діє.

Типові застосування

Конвертація систем числення трапляється у щоденній роботі розробників, фахівців з безпеки та апаратного забезпечення, коли число є більшим, ніж просто лічильник.

  • Вбудована прошивка: читання hex-дампу з JTAG-зонду, пошук адреси функції та запис команди точки зупину з використанням десяткового зсуву, прийнятого скриптом відладчика.
  • Мережева безпека: розбір 32-бітної маски мережі у пунктирно-десятковому записі назад у двійкову для підрахунку довжини префіксу, потім запис форми CIDR для правила ACL.
  • CTF-задачі та крипто-виклики: перемикання між hex, десятковою та двійковою при порівнянні витоку фрагменту ключа з кандидатом у відкритий текст під XOR.

Практичний приклад

Введіть 255 у панель десяткової. Панель hex оновиться до FF (або 0xFF з увімкненим перемикачем префіксу), панель двійкової до 11111111 (у вигляді 1111_1111 з групуванням) та панель вісімкової до 377. Встановіть основу панелі власної на 36 — те саме значення відображатиметься як 73. Введіть набагато більше значення, наприклад 123456789012345678901234567890, у панель десяткової; панель hex використовує шлях BigInt і відображає 18EE90FF6C373E0EE4E3F0AD2.

FAQ

Що таке основа числення?

Основа числення, або radix, — це кількість різних цифр, що використовує позиційна система перед тим, як перейти до наступної позиції. Десяткова (основа 10) використовує 0-9; двійкова (основа 2) — лише 0 та 1; шістнадцяткова (основа 16) — 0-9 плюс A-F. Значення числа не змінюється при зміні основи — змінюється лише спосіб запису та групування цифр.

Навіщо використовують шістнадцяткову систему у програмуванні?

Одна hex-цифра відповідає рівно чотирьом двійковим бітам, тому дві hex-цифри охоплюють байт, а вісім — 32-бітне слово. Це робить hex найкомпактнішою зручною для читання формою для адрес пам'яті, вмісту регістрів, кольорових трійок та криптографічних ключів. Читати 0xFF швидше, ніж 11111111, і бітовий патерн завжди під рукою.

Чи можна конвертувати основи більше 36?

Цей інструмент зупиняється на основі 36, бо це верхня межа нативних JavaScript API parseInt та toString, що приймають 0-9, за якими йдуть A-Z як алфавіт цифр. Основи 37-62 можливі з власним алфавітом (Base58, що використовується в адресах Bitcoin, є одним прикладом), але вони відстежуються як окремий інструмент, бо кожна вища основа потребує власного канонічного порядку цифр.

Чи обробляються від'ємні числа та числа з плаваючою крапкою?

Від'ємні цілі числа виводяться з ведучим знаком мінус у кожній основі — та сама поведінка, яку постачає Number.prototype.toString. Представлення у доповняльному коді для вибраної ширини бітів (8, 16, 32, 64) є окремим виглядом, який ми плануємо додати. Конвертація основ числення з плаваючою крапкою також виходить за межі цієї версії; інструмент обробляє лише цілі значення.

Конвертація систем числення — невелике завдання, що виникає знову і знову у роботі з прошивками, безпекою та графікою. Виконання у вкладці браузера з тими самими арифметичними примітивами, що вже постачаються з Node та V8, зберігає роботу швидкою та дані на вашому пристрої.