Кодировщик и декодер Hex (Base16)

Преобразуйте текст, файлы или исходные байты в шестнадцатеричный вид и обратно. Выберите регистр букв, разделитель и префикс 0x или \x, а декодер сам приведёт в порядок распространённые форматы Hex.

Работает полностью в браузере. Данные никуда не загружаются.

Как пользоваться

  1. Выберите «Кодировать», чтобы перевести текст в Hex, или «Декодировать», чтобы получить текст из Hex.
  2. Введите или вставьте входные данные либо откройте файл, чтобы увидеть его байты в шестнадцатеричном виде.
  3. Настройте параметры: «Верхний регистр», «Разделитель» («Нет», «Пробел» или «Двоеточие») и «Префикс» («Нет», 0x или \x).
  4. Скопируйте результат или скачайте его в виде файла.

Что такое шестнадцатеричная система (Base16)?

В шестнадцатеричной системе используется шестнадцать символов: цифры от 0 до 9 и буквы от A до F. Одна шестнадцатеричная цифра вмещает четыре бита, поэтому каждый байт записывается ровно двумя цифрами, от 00 до FF. Результат вдвое больше исходных данных, это больше, чем у Base64 или Base32, зато границы байтов остаются видимыми. Именно поэтому отладчики, шестнадцатеричные редакторы и сетевые инструменты показывают данные в таком виде.

RFC 4648 стандартизирует эту кодировку под названием Base16: алфавит в верхнем регистре и без дополнения. На практике нижний регистр встречается не реже, и декодеры, включая этот, принимают оба варианта.

Где используется Hex

  • Хеши и ключи. Хеш SHA-256 занимает 32 байта и записывается 64 шестнадцатеричными цифрами. Криптографические ключи, UUID и контрольные суммы обычно тоже показывают в Hex.
  • Аппаратные адреса. MAC-адреса состоят из шести байтов в Hex, обычно разделённых двоеточиями. Разделитель «Двоеточие» выдаёт именно такой формат.
  • Escape-последовательности. Строки в C, Python и JavaScript принимают \x и две шестнадцатеричные цифры для одного байта, и именно это записывает префикс \x.
  • Веб-форматы. Цвета CSS, например #FF8800, — это три байта в Hex, а процентное кодирование URL записывает байты как % и две шестнадцатеричные цифры.

Декодирование Hex в текст

Декодер нетребователен к форматированию. Он принимает цифры в верхнем и нижнем регистре, игнорирует пробелы, переводы строк, запятые, двоеточия, точки с запятой и дефисы, а также удаляет префиксы 0x, \x, % и &#x. Вывод xxd -p, MAC-адреса, UUID, списки 0x через запятую, экранирование %XX и шестнадцатеричные HTML-сущности можно вставлять как есть. Каждому байту нужны две цифры, поэтому нечётное количество цифр считается ошибкой. Байты отображаются как текст в выбранной кодировке.

Чтобы преобразовать Hex в другую кодировку, минуя текст, воспользуйтесь инструментами Hex в Base64 или Base64 в Hex.

Hex в программах

# Python
'Hi'.encode().hex()                 # '4869'
bytes.fromhex('4869').decode()      # 'Hi'

// Node.js
Buffer.from('Hi').toString('hex')             // '4869'
Buffer.from('4869', 'hex').toString('utf8')   // 'Hi'

# Shell
printf 'Hi' | xxd -p                # 4869

Спецификация

Алфавит0-9 A-F
Размер результата2 символа на байт (200%)
ДополнениеНет
СтандартRFC 4648, раздел 8
Учёт регистраНет

Примеры

Исходные данные (UTF-8)Результат
Hello, World!48656c6c6f2c20576f726c6421
Base64.is4261736536342e6973
你好e4bda0e5a5bd

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

Как перевести Hex в текст?

Переключитесь на «Декодировать» и вставьте шестнадцатеричные данные. Пробелы, двоеточия и префиксы 0x или \x удаляются автоматически, а байты отображаются как текст в UTF-8, если вы не выбрали другую кодировку текста.

Какой регистр использовать в Hex: верхний или нижний?

Оба представляют одни и те же байты. В RFC 4648 используется верхний регистр, а многие языки программирования выводят нижний. Включите «Верхний регистр», если целевая система ожидает заглавные буквы; декодер принимает любой вариант.

Почему Hex вдвое длиннее исходных данных?
Каждый байт превращается в два символа, то есть объём растёт на 100%. Base64 добавляет всего около 33%. Если важен размер, преобразуйте байты с помощью инструмента Hex в Base64.
Это то же самое, что перевод числа в шестнадцатеричную систему?
Не совсем. Этот инструмент кодирует последовательность байтов, например байты текста. Чтобы перевести одно целое число, например 255 в FF, воспользуйтесь конвертером систем счисления.