Как пользоваться
- Выберите «Кодировать», чтобы перевести текст в Hex, или «Декодировать», чтобы получить текст из Hex.
- Введите или вставьте входные данные либо откройте файл, чтобы увидеть его байты в шестнадцатеричном виде.
- Настройте параметры: «Верхний регистр», «Разделитель» («Нет», «Пробел» или «Двоеточие») и «Префикс» («Нет», 0x или \x).
- Скопируйте результат или скачайте его в виде файла.
Что такое шестнадцатеричная система (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.is | 4261736536342e6973 |
你好 | e4bda0e5a5bd |
Часто задаваемые вопросы
Как перевести Hex в текст?
Переключитесь на «Декодировать» и вставьте шестнадцатеричные данные. Пробелы, двоеточия и префиксы 0x или \x удаляются автоматически, а байты отображаются как текст в UTF-8, если вы не выбрали другую кодировку текста.
Какой регистр использовать в Hex: верхний или нижний?
Оба представляют одни и те же байты. В RFC 4648 используется верхний регистр, а многие языки программирования выводят нижний. Включите «Верхний регистр», если целевая система ожидает заглавные буквы; декодер принимает любой вариант.