Кодирование и декодирование Base91

Вставьте текст или байты в hex, чтобы закодировать их в basE91, или переключитесь на декодирование, чтобы вернуть из basE91 текст или байты. basE91 использует 91 печатный символ ASCII, поэтому результат заметно короче, чем Base64 для тех же данных.

Режим
Байты как

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. Выберите Кодировать или Декодировать.
  2. Укажите, как читать байты: «Текст (UTF-8)» для обычного текста или «Hex» для двоичных данных, записанных шестнадцатеричными цифрами.
  3. Введите или вставьте данные и скопируйте результат.

Как это работает

basE91 держит очередь битов. Каждый входной байт добавляется в неё; когда накопилось больше 13 бит, кодировщик смотрит на младшие 13 бит:

  • если их значение больше 88, берутся 13 бит;
  • иначе берутся 14 бит (14-битное значение, у которого младшие 13 бит не больше 88, всё равно меньше 91 × 91 = 8281).

Порция v записывается двумя символами: v mod 91, затем v div 91. В конце оставшиеся биты дают ещё один или два символа. Декодер делает обратное: читает символы парами, восстанавливает v и по нему понимает, было в порции 13 или 14 бит.

Пример

Кодируем текст test (байты 74 65 73 74):

  • первые два байта дают очередь 0x6574; её младшие 13 бит — 0x0574 = 1396, это больше 88, поэтому берутся 13 бит;
  • 1396 mod 91 = 31 → f, 1396 div 91 = 15 → P;
  • остальные байты обрабатываются так же, и получается fPNKd.

Hello, World! кодируется в >OwJh>}AQ;r@@Y?F. Русские буквы занимают в UTF-8 по 2 байта, поэтому кодируются примерно вдвое длиннее латиницы.

Советы

  • В basE91 есть символ “ и другие знаки — в командной строке берите результат в одинарные кавычки, в JSON экранируйте.
  • Ни выравнивания, ни контрольной суммы нет: обрезанная строка молча декодируется в меньшее число байтов.
  • Для адресов и имён файлов лучше подходят Base64 в варианте для URL или Base58.

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

Что такое basE91?

Текстовая кодировка двоичных данных, которую придумал Иоахим Хенке. Она читает вход порциями по 13 или 14 бит и записывает каждую порцию двумя символами из алфавита в 91 печатный символ ASCII: A–Z, a–z, 0–9 и знаки !#$%&()*+,./:;<=>?@[]^_`{|}~".

Насколько basE91 короче Base64?

Base64 всегда добавляет 33 % (4 символа на 3 байта). basE91 добавляет от 14 до 23 % в зависимости от данных: 91 × 91 = 8281 значение вмещает 13 бит, а часто и 14. Hello, World! (13 байтов) — это 16 символов в basE91 и 20 в Base64.

Каких символов в basE91 нет?

Пробела, апострофа ('), дефиса (-) и обратной косой черты (\), а также управляющих символов. Поэтому результат безопасен в большинстве текстовых полей, но кавычки и знаки в нём есть, так что для URL и имён файлов он не годится без экранирования.

Можно ли переносить закодированный текст по строкам?

Да. При декодировании пробелы и переносы строк пропускаются, поэтому разбитый на строки basE91 декодируется нормально. Любой другой символ вне алфавита считается ошибкой.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 7 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.