Xxencode и xxdecode

Кодируйте текст, шестнадцатеричные байты или файлы в xxencode или декодируйте блоки xxencode обратно в исходные данные. В алфавите используются только буквы, цифры, плюс и минус.

Работает полностью в браузере. Данные никуда не загружаются.

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

  1. Выберите «Кодировать», чтобы получить блок xxencode, или «Декодировать», чтобы превратить его обратно в данные.
  2. Оставьте параметр «Строки begin / end» включённым и укажите «Имя файла», чтобы получить полный блок, или отключите его, чтобы получить только строки данных.
  3. Введите или вставьте исходные данные либо откройте файл. Результат обновляется по мере ввода.
  4. Скопируйте результат или скачайте его. Если при декодировании данные оказались не текстом, выберите формат вывода Hex или скачайте файл.

Что такое xxencode?

Xxencode сохраняет структуру uuencode и меняет только символы. Каждые 3 байта по-прежнему превращаются в четыре 6-битных значения, строки данных по-прежнему содержат до 45 байт после символа длины, а блок по-прежнему располагается между строкой begin 644 name и строкой end.

64 значения сопоставлены символам +, -, цифрам 0-9, заглавным буквам A-Z и строчным буквам a-z именно в этом порядке. Символ длины использует ту же таблицу, поэтому полная строка из 45 байт начинается с h, а пустая строка перед end состоит из одного символа +. Поскольку структура идентична, размер результата такой же, как у uuencode: примерно на 38% больше исходных данных с учётом символов длины и переводов строк.

Зачем был создан xxencode

Результат uuencode полон знаков препинания, таких как [, ], \, ^ и !. В мейнфреймах IBM используется EBCDIC, а не ASCII, и в разных кодовых страницах EBCDIC эти символы находятся на разных позициях. Когда почта проходила через шлюзы между сетями ASCII и EBCDIC, такие символы могли преобразовываться неправильно, и файл повреждался.

Буквы, цифры, плюс и минус одинаковы во всех кодовых страницах EBCDIC, поэтому текст в формате xxencode без потерь преобразуется в обе стороны. Позже той же цели достиг MIME: Base64 тоже использует только буквы, цифры и несколько символов, одинаковых в ASCII и EBCDIC. Xxencode так и не стал столь же распространённым, как uuencode, и в конце концов Base64 вытеснил их обоих.

Сравнение uuencode и xxencode

UuencodeXxencode
СимволыASCII от 32 до 95, обратный апостроф для нуля+ - 0-9 A-Z a-z
Начало полной строки из 45 байтMh
Последняя строка перед end`+
Безопасность при передаче через шлюзы EBCDICНетДа

Спецификация

Алфавит+ - 0-9 A-Z a-z
Размер результатаОколо 137% с учётом префиксов строк
ДополнениеСтроки до 45 байт
Стандартxxencode
Учёт регистраДа

Примеры

Исходные данные (UTF-8)Результат
Hello, World!begin 644 data.bin BG4JgP4wg63RjQalY6E++ + end
Base64.isbegin 644 data.bin 7Ea3nNHMo9aZn + end
你好begin 644 data.bin 4t9qUtOKx + end

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

Как отличить uuencode от xxencode?
Посмотрите на строки данных. Строки xxencode содержат только буквы, цифры, плюс и минус, а полные строки начинаются с h. Строки uuencode содержат знаки препинания, а полные строки начинаются с M. Если декодирование здесь завершается ошибкой о недопустимом символе, попробуйте страницу uuencode.
Записывает ли инструмент строки begin и end?
Да, по умолчанию он записывает begin 644 с указанным вами именем файла и завершающие строки. Отключите этот параметр, если вам нужны только закодированные строки данных.
Можно ли декодировать блок без строки begin?

Да. Если строки begin нет, каждая непустая строка декодируется как данные. Если она есть, декодирование начинается после неё и заканчивается на строке end, поэтому окружающий текст игнорируется.

Используется ли xxencode сейчас?
Редко. В основном он встречается в старых архивах почты и новостей. Для новых данных лучше подходит Base64: он поддерживается практически везде и так же надёжен для каналов, передающих только текст.