Конвертер текста в шестнадцатеричный код

→
Текст → байты UTF-8 → по 2 шестнадцатеричные цифры на байт, через пробел

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

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

Инструмент кодирует текст в UTF-8 и печатает каждый байт двумя шестнадцатеричными цифрами. Это нотация перехватов пакетов, просмотрщиков памяти и журналов протоколов, поэтому конвертация на деле переводит то, что человек набирает, в то, что показывают его инструменты.

Две цифры на байт, всегда

Байт хранит значения от 0 до 255, и две шестнадцатеричные цифры покрывают ровно этот диапазон — от 00 до FF. Соответствие никогда не меняется, и именно поэтому дамп читается глазами: байты можно считать парами, а столбец смещений слева подсказывает, на какую пару вы смотрите. Строка из восьми символов даёт восемь пар, и ни один символ не может дать половину пары.

Таблица перевода текста в шестнадцатеричный код

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

ТекстШестнадцатеричная
A41
Hi48 69
OK4F 4B
12331 32 33
!21
Go47 6F

Как найти строку внутри трассировки

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

Учитывайте разделители

Инструмент разделяет байты пробелами для наглядности, тогда как многие перехваты и URL пишут цифры слитно или через знак процента. При поиске уберите пробелы или замените их тем разделителем, которого ждёт ваш инструмент: последовательность, выглядящая одинаково, может не совпасть только из-за промежутков.

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

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

Найдите для каждого символа его байтовое значение в UTF-8 и запишите его двумя шестнадцатеричными цифрами. Для «Hi» это 48 и 69. Для символов за пределами ASCII нужны именно байтовые значения, а не коды символов, поскольку один символ может занимать несколько байтов.

Чем шестнадцатеричный вывод отличается от двоичного?

Ничем, кроме записи. Оба кодируют одни и те же байты UTF-8: шестнадцатеричный пишет каждый байт двумя цифрами, двоичный — восемью, поэтому первый в четыре раза короче и гораздо легче читается. Выбирайте шестнадцатеричный для чтения, а двоичный — когда нужно видеть отдельные биты.

Почему буква с диакритикой занимает два байта?

Потому что UTF-8 кодирует всё, что выше исходного диапазона ASCII, более чем одним байтом, и большинству латинских букв с диакритикой хватает двух. Это нормально и не является порчей: символ просто вышел за пределы, которые адресует один байт, и любой счётчик байтов увидит два.

Это та же кодировка, что используется в URL?

Родственная, но не та же. Процентное кодирование записывает байты UTF-8 со знаком процента перед каждой парой, поэтому байтовые значения в точности совпадают с этим инструментом, а различается только пунктуация. Перевод в шестнадцатеричный вид здесь и даёт те байты, которые нужно закодировать процентами.

Можно использовать вывод в литерале массива байтов?

Да. Цифры и есть значения байтов, поэтому добавление префикса 0x к каждой паре даёт литерал почти для любого языка программирования. Инструмент по соглашению печатает заглавными; строчные столь же допустимы там, куда вы это вставите.

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

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