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

Преобразуйте текст в двоичный, шестнадцатеричный, восьмеричный или десятичный код и обратно. С учётом UTF-8, настраиваемые разделители и дополнение нулями. Работает полностью в браузере.

Преобразуйте текст в двоичный, hex, восьмеричный или десятичный — и обратно. Обе панели доступны для редактирования, поэтому можно кодировать текст или вставить закодированную строку для декодирования. Кодирование основано на байтах UTF-8, поэтому акцентированные буквы, символы CJK и эмодзи сохраняются при круговом преобразовании.

Как текст становится байтами

Символы — это не байты

Символ — абстрактная идея; байт — восемь бит памяти. Превращение одного в другое требует кодировки. Этот инструмент использует UTF-8 — кодировку, на которой держится более 98% веба. В UTF-8 диапазон ASCII A-Z, a-z, 0-9 и обычная пунктуация занимают ровно один байт, поэтому A — это 01000001. Акцентированная латиница и греческий занимают по два байта, большинство CJK-символов — по три, а эмодзи — по четыре.

Почему это важно для круговых преобразований

Старые конвертеры текста в двоичный вызывают charCodeAt и обрезают до 8 бит. Это работает для простого ASCII и молча портит всё остальное, поэтому é возвращается как другой символ или как символ замены. Поскольку этот конвертер кодирует настоящие байты UTF-8, строка с китайскими иероглифами и эмодзи декодируется точно в то, с чего вы начали.

Выбор системы счисления

  • Двоичная показывает чистый битовый шаблон — то, что нужно при объяснении работы кодировки или отладке побитового протокола.
  • Шестнадцатеричная — практичный выбор по умолчанию. Две hex-цифры на байт делают границы байтов очевидными, поэтому её используют любые hex-редакторы и сетевые дампы.
  • Восьмеричная группирует по три бита и встречается в основном в правах Unix и некоторых C-эскейпах.
  • Десятичная проще всего читается вслух, но полностью скрывает битовую структуру.

Разделители и дополнение

Дополнение нулями делает все байты одинаковой ширины — восемь символов в двоичной, два в hex, — поэтому вывод можно надёжно разбить даже без разделителя между значениями. Если отключить дополнение, оставьте разделитель, иначе 1 и 10 сольются и результат нельзя будет однозначно декодировать. При декодировании принимается любая смесь пробелов, запятых и переводов строк.

Примечание об открытом коде: использует встроенные API браузера TextEncoder и TextDecoder. Сторонние библиотеки не используются.

Часто задаваемые вопросы

Почему мой китайский символ — три группы по восемь бит?
UTF-8 кодирует большинство CJK-символов тремя байтами, и каждый байт становится одной восьмибитной группой. Это правильное поведение, а не ошибка.
Могу ли я декодировать двоичный код без разделителей?
Да, если он был дополнен нулями. Декодер возвращается к нарезке фиксированной ширины — восемь символов на байт в двоичной, два в hex, — когда не находит разделителя.
Используется ли здесь ASCII или UTF-8?
UTF-8. Для простого диапазона ASCII они идентичны, поэтому английский текст выглядит одинаково в любом случае, но UTF-8 также корректно обрабатывает все остальные символы.
Почему я получаю ошибку при декодировании ввода?
Каждая группа должна разбираться в значение от 0 до 255 в выбранной системе счисления. Значение 256, лишняя буква в двоичном режиме или неверно выбранная система счисления — всё это вызовет ошибку.
Это то же самое, что Base64?
Нет. Base64 упаковывает три байта в четыре печатных символа, чтобы данные были компактными. Этот инструмент выводит каждый байт отдельно в выбранной числовой системе счисления — гораздо многословнее, но читаемо человеком.
Мой текст куда-либо отправляется?
Нет. Кодирование и декодирование используют встроенные в браузер TextEncoder и TextDecoder, полностью на вашей машине.