Как перевести hex в текст
- Вставьте hex в поле Ввод · Hex. Подойдут заглавные или строчные буквы, с разделителями или без.
- Текст появляется в поле Результат · Текст по ходу ввода. Снимите галочку На лету, если удобнее конвертировать кнопкой Выполнить.
- Если в результате видно
�, откройте Кодировка под результатом и попробуйте другую. По умолчанию стоит UTF-8; в списке есть ASCII, Latin-1, Windows-1252 и ещё 23 варианта. - Для текста используйте Скопировать результат или Скачать. Если в hex записан дамп файла, а не текст, Сохранить байты запишет «сырые» байты на диск с расширением, угаданным по содержимому.
Чтобы перевести текст в hex, нажмите Текст → Hex над инструментом или откройте Текст в hex.
Какие форматы hex понимает конвертер
Запись hex зависит от инструмента, который его выдал. Всё это декодируется в Hello:
| Формат | Пример | Откуда обычно берётся |
|---|---|---|
| Сплошной | 48656c6c6f | xxd -p, sha256sum, дампы баз данных |
| Через пробел | 48 65 6c 6c 6f | Wireshark, hex-редакторы |
| Через двоеточие | 48:65:6c:6c:6f | отпечатки сертификатов, вывод openssl |
| Через дефис | 48-65-6C-6C-6F | BitConverter.ToString в .NET |
Префикс 0x | 0x48 0x65 0x6c 0x6c 0x6f или 0x48656c6c6f | исходники на C, отладчики |
Escape \x | \x48\x65\x6c\x6c\x6f | Python, shell-скрипты, логи |
Запятые, точки с запятой и точки тоже работают как разделители. Вставляйте только колонки с hex: стандартный вид xxd начинает каждую строку со смещения вроде 00000000: и заканчивает колонкой ASCII, поэтому конвертер прочитает смещение как байты, а на первой букве колонки ASCII сообщит об ошибке. Чтобы получить сплошной hex, запустите xxd -p.
Как читать hex в ASCII
Каждая пара hex-цифр даёт один байт, а в ASCII каждый байт меньше 80 соответствует одному символу. Диапазоны, которые стоит запомнить:
| Hex | Символы |
|---|---|
20 | пробел |
30–39 | цифры 0–9 |
41–5A | A–Z |
61–7A | a–z |
21–2F | ! " # $ % & ' ( ) * + , - . / |
0A, 0D | перевод строки и возврат каретки (0D 0A – перенос строки в Windows) |
Заглавные и строчные буквы отстоят друг от друга ровно на 20: 41 даёт A, 61 даёт a. С этим правилом и таблицей короткий hex можно прочитать на глаз. 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 читается как Hello, world: 2c здесь запятая, а 20 пробел.
Hex в UTF-8: байты от 80 до FF
Всё, что выходит за пределы базовой латиницы, в UTF-8 занимает больше одного байта, и все эти байты не меньше 80. Одни и те же байты дают разный текст в зависимости от того, в какой кодировке их читать:
| Hex | Как UTF-8 | Как Windows-1252 |
|---|---|---|
63 61 66 c3 a9 | café | café |
e2 82 ac | € | € |
f0 9f 91 8b | 👋 | 👋 |
63 61 66 e9 | caf� | café |
В первых трёх строках данные в UTF-8, в последней в Latin-1 или Windows-1252, где é занимает один байт e9. Череда символов Ã и â почти всегда означает байты UTF-8, прочитанные в однобайтовой кодировке. Если ни одна кодировка не даёт осмысленного текста, байты, скорее всего, вовсе не текст. Посмотрите на Похоже на в строке статуса: там будет назван формат, если инструмент его узнал.
Hex, Base64 и одни и те же байты
Hex и Base64 записывают байты по-разному: hex тратит два символа на байт, Base64 четыре символа на три байта, так что он на треть короче. Если ваша строка начинается с чего-то вроде SGVsbG8 и содержит буквы дальше f, это Base64: декодируйте его через Base64 в текст. Чтобы перекодировать байты из hex в Base64 для API или конфига, используйте Hex в Base64. Когда применяется каждый из форматов, разобрано в сравнении hex, Base32, Base58 и Base85.
Hex в строку в коде
bytes.fromhex("48656c6c6f").decode("utf-8") # 'Hello'
bytes.fromhex("48 65 6c 6c 6f").decode("utf-8") # spaces are fine: 'Hello'
bytes.fromhex пропускает пробелы, но не принимает двоеточия и 0x, так что их нужно убрать заранее. В Node.js:
Buffer.from("48656c6c6f", "hex").toString("utf8"); // 'Hello'
Buffer.from("48zz65", "hex"); // <Buffer 48>
Вторая строка показывает ловушку: Buffer.from останавливается на первом символе, который не относится к hex, и возвращает то, что успел прочитать, без всякой ошибки. Другие приёмы показаны на страницах про Python и Node.js.
Вопросы и ответы
Как перевести hex в ASCII?
Вставьте hex и прочитайте результат. ASCII покрывает только байты от 00 до 7F, поэтому выберите в Кодировка вариант ASCII, если хотите, чтобы всё, что выше, показывалось как �, а не читалось как UTF-8.
Что за текст 48 65 6c 6c 6f?
Hello. 48 означает H, 65 – e, 6c – l (дважды), а 6f – o.
Почему hex превращается в é или другие странные символы?
Байты в UTF-8 читаются как Latin-1 или Windows-1252, либо наоборот. c3 a9 в UTF-8 означает é, а в Windows-1252 é. Перебирайте Кодировка, пока текст не станет читаемым.
Что значит «нечётное число hex-цифр»?
Каждый байт записывается двумя hex-цифрами, поэтому их общее число должно быть чётным. Одна цифра потерялась при копировании, чаще всего в начале или в конце. Проверьте первую и последнюю пару во вводе.
Можно ли поделиться ссылкой на конвертацию?
Да. Добавьте к адресу страницы #in= и hex, например /hex-to-text/#in=48656c6c6f. Часть после # остаётся в браузере и не отправляется на сервер.