Текст в двоичный код: как ASCII-кодировка превращает символы в биты
Как компьютер хранит текст в виде нулей и единиц, как читать двоичные строки вручную и когда это реально нужно.
За каждым символом стоит число. Буква «H» — это 72. «i» — 105. Пробел — 32. Эти числа определяет стандарт ASCII, утверждённый в 1963 году: он назначил числовые коды 128 символам и до сих пор лежит в основе большей части текста, с которым мы работаем каждый день.
Двоичный код — это просто то, как эти числа выглядят в системе счисления с основанием 2. Вместо 72 пишется 01001000. Каждая позиция — это степень двойки: справа налево биты обозначают 1, 2, 4, 8, 16, 32, 64, 128. Складываем единицы: 64 + 8 = 72. Это «H».
Таблица ASCII: 128 символов, на которых держится интернет
ASCII охватывает коды от 0 до 127. Первые 32 — управляющие: перевод строки (10), табуляция (9), возврат каретки (13). Символы с 32 по 126 — печатаемые: буквы, цифры, знаки препинания, пробел. Символ 127 — DEL, пережиток эпохи, когда он означал «пробить все отверстия в этой позиции ленты».
Диапазоны, которые полезно помнить:
- Цифры «0»–«9»: коды 48–57
- Заглавные «A»–«Z»: коды 65–90
- Строчные «a»–«z»: коды 97–122
Разрыв в 32 единицы между верхним и нижним регистром сделан намеренно. Переключить регистр — значит инвертировать бит 5 (позиция 32). «A» — это 01000001. «a» — 01100001. Разница в одном бите.
Как читать двоичный код вручную
Делать это часто не придётся, но один раз разобраться стоит. Метод простой: разбить на группы по 8 бит и сложить степени двойки для каждой единицы:
01001000 = 64 + 8 = 72 = 'H'
01100101 = 64 + 32 + 4 + 1 = 101 = 'e'
01101100 = 64 + 32 + 8 + 4 = 108 = 'l'
01101100 = 108 = 'l'
01101111 = 64 + 32 + 8 + 4 + 2 + 1 = 111 = 'o'
«Hello» — пять символов, 40 бит.
Когда это реально нужно
CTF-соревнования. Двоичные строки встречаются в capture-the-flag задачах постоянно. Их легко узнать: длинная последовательность нулей и единиц, разбитая на группы по 8.
Отладка бинарных форматов. В некоторых форматах напрямую используются битовые флаги. При разборе TCP-заголовка или сетевого пакета важно видеть содержимое конкретного байта. Перевод в двоичный код — самый быстрый способ это проверить.
Объяснение принципов работы компьютера. Конвертация «Hi» в двоичный код и обратно — одна из лучших иллюстраций того, что такое байт. Абстракция исчезает моментально.
Кодировка для головоломок. Это не шифрование — любой с декодером прочтёт сразу — но двоичный вид выглядит достаточно непонятным, чтобы сбить с толку случайного наблюдателя. Для задачек подходит, для хранения секретов — нет.
А что с Unicode?
ASCII хватает на 128 символов. Unicode — более 140 000. Конвертер текста в двоичный код использует метод charCodeAt в JavaScript, который возвращает кодовые точки UTF-16. Для стандартных ASCII-символов (0–127) результат совпадает с классическим ASCII. Для символов вне этого диапазона — «é» даёт 233, «€» — 8364, кириллическая «А» — 1040 — значение окажется выше 127, и двоичное представление будет отличаться от того, что выдал бы однобайтовый ASCII-кодировщик.
Для большинства задач — отладки, обучения, несложного кодирования — это несущественно. Если работаете с конкретным байтовым протоколом, уточните, какую кодировку он ожидает.
Вставьте любую строку в конвертер текста в двоичный код — двоичное представление появится мгновенно. Работает и в обратную сторону: вставьте двоичный код и получите текст.