Конвертер шестнадцатеричных чисел в десятичные

→
Десятичное = сумма шестнадцатеричных цифр, умноженных на 16 в степени их позиции

Из шестнадцатеричной в десятичную: придаём значению смысл

Что делает эта конвертация

Инструмент читает значение в основании 16 и пересказывает его в основании 10. Шестнадцатеричная удобна машине и тому, кто сравнивает битовые шаблоны, но для порогов, размеров буферов и всего, что человек оценивает на глаз, нужна десятичная цифра. Это то направление, к которому прибегают, когда инструмент выдал значение и перестал что-либо объяснять.

Веса разрядов — степени 16

Справа налево каждая шестнадцатеричная цифра умножается на 1, 16, 256, 4096 и так далее. Для 1E90FF значение равно 1 × 16 в пятой степени плюс 14 × 16 в четвёртой и далее, что даёт 2003199. Арифметика та же взвешенная сумма, что и в любой системе: меняются только веса, поэтому метод одинаково работает и для двоичной, и для восьмеричной.

Таблица перевода из шестнадцатеричной системы в десятичную

Шестнадцатеричные значения, которые регулярно попадаются при отладке и в веб-разработке, и их десятичные эквиваленты. Запоминать стоит круглые шестнадцатеричные числа: они отмечают границы байтов и страниц памяти.

ШестнадцатеричнаяДесятичная
00
11
F15
1016
7F127
A5165
FF255
10004096
FFFF65535
DEADBEEF3735928559

Что именно расшифровывают на практике

Три повторяющиеся задачи — прочитать канал цвета, сверить адрес памяти с границей и превратить усечённый хеш во что-то сравнимое. Цвет — самый наглядный пример: 0x1E90FF распадается на 30, 144 и 255, и сразу видно, что синий канал насыщен, а красный слаб. То же трёхшаговое чтение применимо к любому упакованному значению, и оно даётся гораздо легче, когда байты разделены.

Разделите значение до перевода

Шестизначный цвет или длинный адрес удобнее читать парами цифр, ведь каждая пара — это байт. Перевести значение целиком годится для одного ответа, но именно разбиение показывает, какой байт выбивается из ряда, — а это обычно и есть настоящий вопрос.

Частые вопросы

Как перевести шестнадцатеричное число в десятичное вручную?

Умножьте каждую цифру на её вес — 1, 16, 256, 4096 и дальше справа налево — и сложите результаты. Помните, что A — это 10, B — 11 и так до F, то есть 15. Для 1E90FF получится 1048576 + 917504 + 36864 + 0 + 240 + 15, то есть 2003199.

Почему адреса памяти выглядят как длинные шестнадцатеричные числа?

Потому что они естественно выровнены по границам байтов и слов, а шестнадцатеричные цифры ложатся на эти границы так, как десятичные не ложатся. Две шестнадцатеричные цифры — один байт, поэтому ведущие цифры адреса описывают страницу, а хвостовые — смещение внутри неё.

Можно вставить значение с префиксом 0x?

Да, префикс распознаётся и отбрасывается перед переводом, поэтому значение, скопированное прямо из отладчика или исходника, работает без правок. Префикс, не соответствующий этой странице, вызывает сообщение об ошибке, а не молча игнорируется, так что неверно прочитанное значение не проскочит.

Насколько большим может быть шестнадцатеричное значение?

Шестьдесят четыре бита и заметно больше. Значения на верхней границе этого диапазона превышают то, что точно хранит обычная плавающая точка, поэтому перевод идёт в точной целочисленной арифметике и возвращает все цифры верно, а не округлённый ответ, какой дала бы таблица.

Имеет ли префикс хеша смысл как число?

Арифметически да, практически нет. Перевести первые байты хеша в десятичное число полезно, чтобы заметить закономерность или сравнить значения в скрипте, но усечённый хеш уже потерял свойство, которое делало его хешем, поэтому не стоит считать десятичную запись самостоятельным идентификатором.

Скопируйте приведённый ниже код и вставьте его на свой сайт, чтобы добавить этот конвертер.

<!-- Шестнадцатеричная в десятичную -->
<iframe src="https://unitflow.net/ru/embed/hex-to-decimal" title="Шестнадцатеричная в десятичную" width="100%" height="420" loading="lazy" style="border:0;max-width:100%;display:block"></iframe>
<p><a href="https://unitflow.net/ru/hex-to-decimal" target="_blank" rel="noopener">Работает на UnitFlow</a></p>