Перейти к содержимому

Перевод текста в двоичный код и обратно

Буква «A» в двоичном коде — 01000001, а русская «П» в UTF-8 занимает два байта: 11010000 10011111. Введите текст — получите байты; вставьте код — получите текст.

Инструмент

Запись байтов
Направление
  • НаправлениеТекст → двоичная запись
  • Символов6
  • Байт UTF-812
  • Бит96
6 лишних байтов: кириллица и другие символы вне ASCII занимают в UTF-8 по 2–4 байта.
Текст в двоичный код онлайн — UTF-8, hex и десятичные байты
Текст ⇄ двоичный код по байтам UTF-8, а также hex и десятичные коды; кириллица и эмодзи

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

Каждый символ текста хранится в памяти как один или несколько байтов, а байт — это 8 бит, то есть восемь нулей и единиц. Конвертер кодирует текст в UTF-8, получает байты и записывает каждый в выбранной системе: двоичной (8 знаков), шестнадцатеричной (2 знака) или десятичной (число от 0 до 255). Байты разделяются пробелом, чтобы код можно было прочитать глазами.

символ → код Unicode → байты UTF-8 → каждый байт в 8 бит «A» = U+0041 = 65 = 0100 0001 → 01000001 «П» = U+041F = D0 9F → 11010000 10011111

Из символа в биты

Разберём вручную слово «Hi». Буква «H» в таблице ASCII имеет код 72: 72 = 64 + 8, значит, единицы стоят в разрядах 64 и 8 — 01001000. Буква «i» — код 105 = 64 + 32 + 8 + 1 → 01101001. Итог: 01001000 01101001, 2 байта, 16 бит. В шестнадцатеричной записи те же байты — 48 69, в десятичной — 72 105.

С кириллицей на шаг больше: у «П» код Unicode 1055 (U+041F), а в UTF-8 такие коды занимают два байта по шаблону 110xxxxx 10xxxxxx. Биты числа 1055 — 100 0001 1111 — раскладываются по свободным позициям: 11010000 10011111, или D0 9F. Слово «Москва» из шести букв превращается в 12 байт: D0 9C D0 BE D1 81 D0 BA D0 B2 D0 B0.

Таблица ASCII: коды популярных символов

СимволДвоичныйHexДесятичный
Пробел001000002032
0001100003048
9001110013957
A010000014165
Z010110105A90
a011000016197
z011110107A122
@010000004064
Перенос строки000010100A10

Заглавные и строчные латинские буквы отличаются одним битом — 32: A = 65, a = 97. Цифры идут подряд с 48, поэтому символ «5» — это 48 + 5 = 53. Кириллица в UTF-8 начинается с байта D0 или D1: заглавные А–Я — D0 90…D0 AF, строчные а–п — D0 B0…D0 BF, р–я — D1 80…D1 8F.

Сколько байт занимает символ в UTF-8

Диапазон UnicodeБайтЧто попадает
U+0000–U+007F1Латиница, цифры, знаки ASCII
U+0080–U+07FF2Кириллица, греческий, арабский, иврит
U+0800–U+FFFF3Иероглифы, символ рубля ₽, тенге ₸, гривны ₴
U+10000–U+10FFFF4Эмодзи, редкие письменности

Из-за этого текст на русском весит почти вдвое больше латинского при том же числе букв: СМС на кириллице вмещает 70 знаков против 160 латинских по той же причине — экономные кодировки не покрывают русский алфавит. В базах данных и API это влияет на лимиты полей: столбец на 255 байт вмещает лишь 127 русских букв.

Где применяется двоичный код

Программисты используют двоичную и hex-запись при отладке сетевых пакетов, файлов и кодировок: «кракозябры» вроде «РџСЂРёРІРµС‚» — это байты UTF-8, прочитанные как Windows-1251, и по hex-дампу такую ошибку видно сразу. Школьники и студенты в России, Беларуси и Казахстане решают задачи по информатике на объём информации: сообщение из 40 символов в 8-битной кодировке занимает 320 бит, а в UTF-8 с кириллицей — уже 640.

Двоичный код встречается и в дизайне — надписи из нулей и единиц на футболках и в заставках, и в головоломках, где слово спрятано в байтах. Конвертер решает обе задачи: превращает фразу в код и читает код обратно, сообщая, если байты не складываются в корректный текст.

Вопросы и ответы

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

Так устроена кодировка UTF-8: символы с кодами 0–127 (латиница, цифры, знаки) записываются одним байтом, кириллица (коды 1024–1279) — двумя, иероглифы — тремя, эмодзи — четырьмя. Поэтому «Hi» — это 16 бит, а «Да» — 32 бита.

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

Разбейте последовательность на группы по 8 бит и переведите каждую в десятичное число: 01001000 = 64 + 8 = 72. Найдите код в таблице ASCII — 72 соответствует «H». Байты от 128 и выше принадлежат многобайтовым символам UTF-8, их нужно собирать по два–четыре.

Чем отличаются двоичная, шестнадцатеричная и десятичная запись?

Это одни и те же байты в разных системах счисления. Байт 01001000 в двоичной записи — это 48 в шестнадцатеричной и 72 в десятичной. Hex компактнее и принят в программировании и отладке, двоичная нагляднее для обучения, десятичная встречается в старых таблицах ASCII.

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

Чаще всего длина двоичной строки не делится на 8 или байты не образуют корректную последовательность UTF-8. Например, «Привет» в кодировке Windows-1251 — это CF F0 E8 E2 E5 F2, и в UTF-8 такие байты недопустимы. Проверьте, что число бит кратно 8, а текст был в UTF-8.

Что такое ASCII и почему там только 128 символов?

ASCII — американская таблица 1963 года на 7 бит: 33 управляющих кода и 95 печатных символов — латиница, цифры, знаки. Восьмой бит освобождал место для национальных алфавитов, так появились КОИ-8 и Windows-1251 для кириллицы. UTF-8 совместим с ASCII: первые 128 кодов совпадают.

Источники и методика

Обновлено: