Шестнадцатеричная система
Шестнадцатеричная система — запись чисел и байтов по основанию 16 с помощью символов 0–9 и A–F.
Определение
Шестнадцатеричная система, или hex, — позиционная система счисления по основанию 16. В ней используются цифры от 0 до 9 и буквы от A до F: A соответствует десятичному 10, а F — 15.
Hex удобен для отображения двоичных данных: одна шестнадцатеричная цифра точно соответствует 4 битам, а две цифры представляют байт от 00 до FF.
Как это работает
Как и в десятичной записи, значение зависит от позиции, но вместо степеней 10 используются степени 16. Поэтому 2F означает 2 × 16 + 15, то есть 47 в десятичной системе. Регистр букв обычно не влияет на значение.
В программах перед шестнадцатеричным числом часто ставят 0x, а между байтами добавляют пробелы или двоеточия. Это соглашения о формате, а не шестнадцатеричные цифры.
Практический пример
Тексту Hi в UTF-8 соответствуют байты 48 69 в hex. Если преобразовать пары обратно в байты и интерпретировать их как UTF-8, получится Hi. Те же байты в Base64 записываются как SGk=.
На каждый исходный байт приходится два текстовых символа hex, поэтому запись легко проверять глазами, но она примерно вдвое больше сырых данных.
Интерпретация и частые ошибки
Hex-строка не сообщает, что означают её байты: это может быть текст, число, файл, хеш или шифротекст. Для превращения байтов в текст также нужна правильная кодировка символов. При побайтовом декодировании нечётное число hex-цифр неполно, если соглашение не подразумевает ведущий ноль.
Шестнадцатеричная запись обратима и не обеспечивает конфиденциальность: это не шифрование.
Нет. Она меняет только способ записи чисел или байтов. Любой может преобразовать корректное hex-значение обратно без ключа.
Байт обычно записывают двумя hex-цифрами. В строке нечётной длины одна половина байта остаётся без пары, хотя обычное шестнадцатеричное число может содержать любое количество цифр.
Нет. A–F и a–f обычно имеют одинаковые значения, хотя конкретный формат вывода может требовать определённый регистр.