Как перевести текст в hex
- Введите или вставьте текст в поле Ввод · Текст. Hex появляется в поле Результат · Hex по мере ввода.
- Под полем ввода Кодировка определяет, как символы превращаются в байты. Оставьте UTF-8, если принимающая система не ждёт другого.
- Под результатом выберите Регистр (строчные или ПРОПИСНЫЕ), Разделитель (нет, пробел,
:,0xили\x) и Байтов в строке (без ограничения, 16 или 32). - Нажмите Скопировать результат или Скачать. Переключатель Hex → Текст превращает hex обратно в текст, как и страница hex в текст.
Варианты вывода
Разделители и регистр покрывают обычные места, куда вставляют hex. Для текста Hi!:
| Настройки | Результат | Где пригодится |
|---|---|---|
| нет, строчные | 486921 | хеши, URL, JSON |
| пробел, ПРОПИСНЫЕ | 48 69 21 | hex-редакторы, документация протоколов |
: | 48:69:21 | отпечатки, списки в стиле MAC-адресов |
0x | 0x48 0x69 0x21 | исходники на C и ассемблере |
\x | \x48\x69\x21 | экранирование в строках C, Python, printf в Bash |
Форма \x вставляется прямо в строковый литерал: printf '\x48\x69\x21' в Bash печатает Hi!. Байтов в строке разбивает длинный вывод на строки по 16 или 32 байта, чтобы смещения можно было считать на глаз.
Сколько байтов занимает один символ
ASCII-символы занимают по одному байту, и UTF-8 оставляет их без изменений, так что для английского текста обе кодировки дают одинаковый hex. Всё остальное зависит от кодировки:
| Текст | UTF-8 | ISO-8859-1 | UTF-16LE |
|---|---|---|---|
A | 41 | 41 | 41 00 |
é | c3 a9 | e9 | e9 00 |
€ | e2 82 ac | недоступен | ac 20 |
👋 | f0 9f 91 8b | недоступен | 3d d8 4b dc |
Символы, которые кодировка не может представить, заменяются на ?, а строка статуса сообщает, сколько их заменено. Если hex из другой системы не совпадает с вашим, первым делом проверьте разницу в кодировках.
Поиск невидимых символов
Через hex быстрее всего увидеть символы, которые на экране выглядят как пустота. Две строки, которые печатаются одинаково, могут различаться байтами:
| Hex в UTF-8 | Символ |
|---|---|
20 | обычный пробел |
c2 a0 | неразрывный пробел, часто попадается в тексте, скопированном с веб-страниц и из Word |
e2 80 8b | пробел нулевой ширины |
ef bb bf | метка порядка байтов (BOM) в начале файла |
0d 0a | перевод строки Windows (в Linux и macOS – только 0a) |
Если пароль, API-ключ или значение из конфига «правильное, но не принимается», вставьте его сюда с Разделитель = пробел и поищите что-нибудь из этого списка. Та же проверка полезна перед кодированием текста в Base64 через текст в Base64: Base64 сохраняет каждый невидимый байт, и они переживут кодирование.
Текст в hex в коде
"Hi!".encode("utf-8").hex() # '486921'
"Hi!".encode("utf-8").hex(" ") # '48 69 21' (separator argument, Python 3.8+)
"é".encode("latin-1").hex() # 'e9'
const hex = Array.from(new TextEncoder().encode("café"),
b => b.toString(16).padStart(2, "0")).join(" ");
// '63 61 66 c3 a9'
TextEncoder всегда выдаёт UTF-8. Аналогичные вызовы для Base64 показаны на страницах JavaScript и Python.
Вопросы и ответы
Как перевести строку в hex?
Вставьте строку в поле ввода. Каждый символ превращается в значения своих байтов в выбранной кодировке, по две hex-цифры на байт. В Python то же самое делает "Hello".encode("utf-8").hex().
Как будет «Hello» в hex?
48 65 6c 6c 6f в ASCII и UTF-8: для обычных латинских букв эти кодировки совпадают. В UTF-16LE это 48 00 65 00 6c 00 6c 00 6f 00.
Почему é превращается в два байта, c3 a9?
UTF-8 кодирует каждый символ выше U+007F двумя–четырьмя байтами. Если нужен один байт e9, выберите в Кодировка ISO-8859-1 (Latin-1) или Windows-1252.
Как получить hex с 0x перед каждым байтом?
Выберите 0x в поле Разделитель. Результат будет выглядеть как 0x48 0x65 0x6c 0x6c 0x6f. Полный литерал массива для C или Rust вместе с объявлением напишет Base64 в массив байтов.