Как пользоваться
- Выберите «Текст → байты», чтобы закодировать текст, или «Байты → текст», чтобы декодировать.
- Выберите формат байтов: двоичный, шестнадцатеричный, десятичный или восьмеричный.
- Введите или вставьте данные. Результат и число байтов будут обновляться по мере ввода.
- Скопируйте результат или перенесите его в поле ввода, чтобы проверить обратное преобразование.
Как это работает
Компьютеры хранят текст в виде байтов. Этот инструмент использует UTF-8 — кодировку, которую применяют почти все сайты и современные системы. В UTF-8 128 символов ASCII (английские буквы, цифры и основные знаки пунктуации) занимают по одному байту. Поэтому H в двоичной системе — это 01001000, а в шестнадцатеричной — 48. Все остальные символы занимают от двух до четырёх байтов: é — 2 байта (C3 A9), € и ☕ — 3 байта, а большинство эмодзи — 4 байта. Поэтому число байтов может превышать число символов, а один символ может превращаться в несколько групп по 8 бит.
Каждый байт можно записать четырьмя распространёнными способами: в двоичной системе — 8 цифрами (00000000–11111111), в шестнадцатеричной — 2 цифрами (00–FF), в десятичной — числом от 0 до 255 или в восьмеричной — 3 цифрами (000–377). Если байты записаны без разделителей, значения в двоичной, шестнадцатеричной и восьмеричной системах дополняются нулями до фиксированной длины, а десятичные — до 3 цифр, чтобы их можно было однозначно разделить при чтении.
При декодировании форматирование не мешает: пробелы, переносы строк, запятые и точки с запятой между байтами игнорируются, как и префиксы 0x и 0b и escape-последовательности \x. Проверяется каждая группа: если в ней есть недопустимая для выбранного формата цифра или значение больше 255, инструмент укажет позицию байта. После декодирования байты проверяются на соответствие UTF-8; если это не текст, вы получите уведомление.
Символы, состоящие из нескольких кодовых точек, например флаги или эмодзи с оттенком кожи, здесь считаются несколькими символами, поскольку каждая кодовая точка кодируется отдельно.
Примеры
Классическое «Hi» в двоичной системе
H имеет код ASCII 72, а i — 105. Поэтому «Hi» в двоичной системе записывается как 01001000 01101001, в шестнадцатеричной — как 48 69, а в десятичной — как 72 105: 2 символа, 2 байта, 16 бит.
Почему «Café» занимает 5 байтов
Каждая из букв C, a и f занимает один байт, а é в UTF-8 занимает два: 11000011 10101001 (C3 A9). В слове 4 символа, но оно занимает 5 байтов. Это важно учитывать при ограничениях на размер столбцов базы данных и полей протоколов, измеряемых в байтах.
Как прочитать дамп в шестнадцатеричном формате
Отладчик показывает последовательность 48 65 6c 6c 6f 2c 20 e4 b8 96 e7 95 8c. Вставьте её в режиме «Байты → текст» и выберите шестнадцатеричный формат, чтобы получить «Hello, 世界»: каждый китайский иероглиф занимает 3 байта.
Часто задаваемые вопросы
Почему один символ превращается в 16, 24 или 32 бита?
В UTF-8 только символы ASCII занимают один байт (8 бит). Буквы с диакритическими знаками и большинство других алфавитов занимают 2 байта, китайские, японские, корейские символы и многие знаки — 3, а эмодзи — 4. Каждый байт отображается отдельной группой.
Это ASCII или UTF-8?
UTF-8. Для обычного английского текста результат совпадает с ASCII, поскольку UTF-8 совместима с этой кодировкой. Символы за пределами ASCII невозможно представить только с помощью ASCII.
Почему при декодировании двоичного кода возникает ошибка?
Каждый байт должен состоять не более чем из 8 двоичных цифр и содержать только 0 и 1. Если пробелов нет, общее число цифр должно быть кратно 8. В сообщении об ошибке указано, какой байт не удалось прочитать.
Что значит «не является допустимым UTF-8»?
Байты не образуют допустимые последовательности UTF-8 — например, это может быть отдельный байт со значением больше 127 или последовательность, оборванная на середине. Данные могут быть взяты из файла в другой кодировке, например Windows-1252, или вообще не быть текстом.
Конфиденциальность
Преобразование выполняется в браузере с помощью встроенных кодировщика и декодировщика UTF-8. Ваш текст не загружается на сервер, не сохраняется и не передаётся в аналитику.