Перевод в HEX онлайн и обратно. Почему русская буква занимает два байта

1 Ноябрь, 2026 • Руководства • 39 просмотров

Ноутбук на рабочем столе с размытыми строками кода, рядом тетрадь в клетку и карандаш

Как перевести текст в HEX и обратно, почему буквы русского алфавита занимают в UTF-8 два байта и почему HEX иногда не переводится обратно в текст.

Чтобы перевести текст в HEX, его сначала кодируют в байты UTF-8, а затем каждый байт записывают двумя шестнадцатеричными цифрами. Для текста в другой кодировке байты, а значит и HEX, будут другими. Слово «Привет» из 6 букв занимает 12 байт и превращается в строку из 24 знаков d09fd180d0b8d0b2d0b5d182, ведь каждая буква русского алфавита в UTF-8 занимает два байта.

С латиницей строка получается короче. «Hi» превращается в 4869, по два знака на букву. При обратном переводе каждая пара HEX-цифр восстанавливает один байт, а затем байты читаются как текст в нужной кодировке.

Как перевести текст в HEX с помощью Конвертера Hex

Откройте Конвертер Hex, вставьте строку, выберите направление перевода и нажмите кнопку. Конвертер Hex входит в наш набор инструментов Digily Link и доступен любому посетителю.

  1. Вставьте текст или HEX-строку в поле «Содержание».
  2. В поле «Тип» выберите «В шестнадцатеричный формат», если нужен HEX, или «В текст» для обратного перевода.
  3. Нажмите «Отправить».
  4. Результат появится в блоке «Шестнадцатеричный». Скопируйте его кнопкой «Копировать в буфер обмена».

Инструмент выдаёт HEX строчными буквами, без пробелов и без префикса 0x. В основе лежит функция PHP bin2hex, которая, согласно документации PHP, представляет каждый байт двумя шестнадцатеричными цифрами. Сама она кодировку не меняет, а работает с уже готовыми байтами строки.

Почему русская буква в UTF-8 занимает два байта

В UTF-8 символ занимает разное число байт в зависимости от его номера в Unicode, и русский алфавит попадает в двухбайтовый диапазон. Границы диапазонов определены в стандарте RFC 3629. В таблице показано, сколько байт занимают разные символы в UTF-8.

Номер символа в UnicodeБайт в UTF-8ПримерHEX
от U+0000 до U+007F1латинская H48
от U+0080 до U+07FF2русская Пd0 9f
от U+0800 до U+FFFF (кроме суррогатов от U+D800 до U+DFFF)3знак евро €e2 82 ac
от U+10000 до U+10FFFF4эмодзи 😀f0 9f 98 80

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

Почему HEX не переводится обратно в текст

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

Дело в функции hex2bin, которая разбирает строку. Согласно документации PHP, при нечётной длине строки или недопустимом символе она возвращает false вместо текста. Примеры в таблице основаны на этом поведении hex2bin, мы проверили их локально на PHP, а не на самом сайте.

ВвелиОжидаемый результатПочему
«D0 9F»пустопробел не является шестнадцатеричной цифрой
«0xd09f»пустомешает префикс 0x
«d09»пустонечётное число символов
«D09F»Пкорректная пара байтов

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

Бывает и так, что результат не пустой, но вместо букв появляются непонятные символы. Тогда проверьте, в какой кодировке была записана исходная строка. Возможно также, что HEX содержит не текст, а двоичные данные или некорректную последовательность UTF-8. Выбрать другую кодировку, например Windows-1251, Конвертер Hex не позволяет.

Как перевести в HEX число, а не текст

Число переводится в шестнадцатеричную систему по другим правилам, а Конвертер Hex работает только с текстом и чисел не пересчитывает. Если ввести в него «255» как текст, вы получите 323535, то есть коды трёх символов «2», «5» и «5», а не FF, шестнадцатеричную запись числа 255.

Для чисел подойдёт Excel. На 29 октября 2026 года справка Microsoft описывает функцию ДЕС.В.ШЕСТН, которая «преобразует десятичное число в шестнадцатеричное». Функция записывается как ДЕС.В.ШЕСТН(число;[разрядность]), в справке приведён пример =ДЕС.В.ШЕСТН(100;4). Для числа 255 формула =ДЕС.В.ШЕСТН(255) вернёт FF. Ограничения функции для отрицательных и очень больших чисел описаны в справке. Для обратного перевода служит функция ШЕСТН.В.ДЕС.

Цветовые коды вида #RRGGBB устроены иначе. Для них есть отдельный конвертер цветовых кодов.

Как Конвертер Hex обрабатывает введённый текст

Перевод выполняется на сервере, сам введённый текст инструмент не сохраняет. Поэтому перед отправкой уберите из строки пароли, токены и персональные данные, особенно если она взята из лога. Перед переводом из строки удаляются HTML-теги. Если после знака «<» нет закрывающего «>», пропадает и весь текст после него. Пробелы в начале и в конце строки тоже обрезаются. Поэтому HEX для фрагмента HTML-кода или строки с пробелом по краям получится неполным.

Если нужно быстро разобрать строку из лога или теста, перевести текст в HEX онлайн можно в Конвертере Hex. Там же HEX можно вернуть обратно в текст.

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

Почему при декодировании HEX получаются кракозябры?

Возможно, строка записана не в UTF-8. Выясните, в какой кодировке её сохранила программа, и по возможности выгрузите данные заново в UTF-8. Выбрать другую кодировку в Конвертере Hex нельзя.

HEX нужно писать заглавными или строчными буквами?

Подходит любой вариант. Инструмент выдаёт строчные буквы, а при обратном переводе понимает и заглавные. В нашей проверке строка «D09F» превратилась в букву «П».

Сколько байт занимает буква Ё?

Два байта, как и остальные буквы русского алфавита. Это касается и заглавной Ё, и строчной ё.

0 из 0 оценок