Из десятичной в шестнадцатеричную: стенография, которой пользуются программисты
Что делает эта конвертация
Инструмент записывает число из основания 10 в основании 16, используя шестнадцать знаков от 0 до 9 и от A до F. Шестнадцатеричная — не другой вид числа, а более короткая запись тех же битов: одна её цифра покрывает ровно четыре двоичных разряда, поэтому 32-битное значение занимает восемь знаков вместо тридцати двух. Ради этого сжатия нотация и держится.
Откуда взялись буквы от A до F
Основанию 16 нужно шестнадцать разных знаков, а общеупотребительных всего десять, поэтому пробел закрывают первые шесть букв алфавита: A — это десять, B — одиннадцать и так до F, то есть пятнадцати. Буквы здесь именно цифры, а не сокращения: FF означает пятнадцать шестнадцатеричных единиц плюс пятнадцать, то есть 255, и никак не связано со словом «пятнадцать».
Таблица перевода из десятичной системы в шестнадцатеричную
Десятичные значения, которые постоянно встречаются в работе с цветом, адресами и масками прав, и их шестнадцатеричные записи. Числа вроде 255 и 65535 отмечают границы однобайтовых и двухбайтовых полей.
| Десятичная | Шестнадцатеричная |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 7 | 7 |
| 8 | 8 |
| 10 | A |
| 15 | F |
| 16 | 10 |
| 31 | 1F |
| 64 | 40 |
| 100 | 64 |
| 127 | 7F |
| 200 | C8 |
| 255 | FF |
| 1000 | 3E8 |
Коды цветов и адреса памяти
Веб-цвет вида #1E90FF — это три байта, красный, зелёный и синий, записанные шестью шестнадцатеричными цифрами, где каждая пара — один канал от 0 до 255. Та же нотация встречается в адресах памяти, где 0x7FFE сравнивать глазами заметно проще, чем его десятичную форму. В обоих случаях выигрывает шестнадцатеричная, потому что её цифры совпадают с границами байтов: две цифры — один байт, всегда.
Следите за регистром букв
Конвертер печатает заглавными, как принято в листингах на C, документации и даташитах. Строчные ничуть не хуже и встречаются в URL и в литералах некоторых языков, а поле ввода принимает любой регистр. Смешивать оба варианта в одном значении формально можно, но читается это плохо, поэтому выберите один и держитесь его.
Частые вопросы
Как перевести десятичное число в шестнадцатеричное без калькулятора?
Делите на 16, записывайте остаток как шестнадцатеричную цифру и повторяйте с частным, пока оно не обратится в ноль, затем прочитайте цифры от последней к первой. Для 255: 255 ÷ 16 — это 15 и остаток 15, а 15 ÷ 16 — это 0 и остаток 15, значит ответ FF. Остатки больше девяти записываются буквами от A до F.
Почему используют шестнадцатеричную, а не двоичную?
Потому что четыре двоичных разряда отображаются ровно в одну шестнадцатеричную цифру, и перевод становится простой подстановкой без арифметики. Шестнадцатеричная — компактная и удобная для человека запись тех же битов, поэтому её и выбирают отладчики, дизассемблеры и сетевые утилиты.
Что означает префикс 0x?
Это пометка, принятая в C и многих других языках, которая говорит: дальше идут шестнадцатеричные цифры, поэтому 0x20 — это тридцать два, а не двадцать. Конвертер принимает префикс 0x на входе и не добавляет его к результату, ведь на этой странице основание и так понятно.
Сколько шестнадцатеричных цифр нужно для 64-битного значения?
Шестнадцать, и конвертер обрабатывает их точно. 64-битное число выходит за пределы того, что представляет плавающая точка, поэтому инструмент на обычных числах выдал бы правдоподобный, но неверный ответ для чего-нибудь вроде FFFFFFFFFFFFFFFF. Точная целочисленная арифметика это исключает.
Регистр шестнадцатеричных цифр имеет значение?
Нет. FF и ff — одно и то же значение, и поле ввода принимает оба варианта. Вывод по соглашению заглавный, как в большинстве исходников, документации и технических руководств.