BinHex

редактировать
BinHex 4
Имя файла extension .hqx
Тип интернет-носителя application / mac-binhex40. application / mac-binhex. application / binhex
Uniform Type Identifier (UTI) com.apple. binhex-archive

BinHex, первоначально сокращение от "двоичный-в-шестнадцатеричный", представляет собой систему двоичного-текстового кодирования, которая использовалась в классической Mac OS для отправки двоичных файлов по электронной почте. Первоначально это была шестнадцатеричная кодировка, последующие версии BinHex больше похожи на uuencode, но объединили обе «вилки» файловой системы Mac вместе с расширенной информацией о файлах.. Файлы BinHexed занимают больше места, чем исходные файлы, но не будут повреждены программным обеспечением, отличным от «8-битной очистки ».

Содержание

  • 1 История
    • 1.1 TRS-80 BinHex (.hex)
    • 1.2 Mac BinHex (.hex)
    • 1.3 Compact BinHex (.hcx)
    • 1.4 BinHex 4 (.hqx)
    • 1.5 BinHex 5
  • 2 Формат файла BinHex 4
  • 3 Ссылки
    • 3.1 Библиография
  • 4 См. Также
  • 5 Внешние ссылки

История

TRS-80 BinHex (.hex)

Изначально BinHex был написан в 1981 году Тимом Манном для TRS-80 как автономная версия схемы кодирования, изначально встроенной в популярный эмулятор терминала, ST80-III by. BinHex использовался для отправки файлов через основные онлайн-сервисы, такие как CompuServe, которые не были «8-битными чистыми» и требовали защиты ASCII, чтобы выжить. Однако не все использовали ST-80, поэтому Манн написал BinHex, чтобы пользователи других эмуляторов могли использовать этот формат.

Исходная система ST-80 работала путем преобразования содержимого двоичного файла в шестнадцатеричный числа, которые сами были закодированы как цифры и буквы ASCII. Затем он добавлял новую строку через каждые 60 символов. Система стала очень популярной после того, как Манн загрузил ее в область файлов TRS-80 компании Compuserve. Система быстро получила добавление контрольной суммы в конце каждой строки для проверки ошибок. Билл Стоквелл преобразовал эту версию в компилятор BASIC / S, который работал намного быстрее, чем интерпретируемая версия Манна.

Файлы BinHex той эпохи обычно имели расширение .hex. Вскоре появились порты для других популярных платформ того времени, включая Apple II. Позднее CompuServe добавил поддержку 8-битной передачи, и этот формат быстро исчез.

Mac BinHex (.hex)

Проблема с загрузкой файлов все еще существовала на CompuServe, когда Mac был впервые выпущен в 1984 году. В апреле 1984 года Уильям Дэвис портировал BinHex на Mac, используя Microsoft BASIC, чтобы создать версию, которая во многом была идентична версиям TRS-80 той же эпохи. Эта версия поддерживала только кодирование «ответвления данных», игнорируя ответвление ресурсов , что означало, что его можно было использовать только для файлов данных. Рост использования электронной почты Интернет примерно совпал с выпуском Macintosh, и версия Дэвиса была размещена в списке рассылки Info-Mac Джоэлом. Хеллер в июне 1984 года. В течение 1984 года было опубликовано несколько новых версий, в результате чего BinHex 3 мог кодировать обе вилки.

Ив Лемперер, автор первого ассемблера для Mac, MacASM, обнаружил, что для загрузки своих файлов на CompuServe он должен использовать BinHex. Версия BASIC была очень медленной, поэтому Lempereur портировал BinHex 3 на ассемблер и выпустил его как BinHex 1.0. Программа была примерно в сто раз быстрее, чем версия BASIC, и вскоре запросы на обновление хлынули потоком.

Compact BinHex (.hcx)

Первоначальный BinHex был довольно простым форматом, один это было не очень эффективно, потому что оно расширяло каждый байт ввода на два, как того требует шестнадцатеричное представление - кодирование с 8 на 4. Для BinHex 2.0 Lempereur использовал новую кодировку 8-к-6, которая уменьшила размер файла на 50%. Он также воспользовался возможностью расширить контрольную сумму с 8 до 16 бит.

В этой новой кодировке для представления данных использовались первые 64 печатных символа ASCII, включая пробел, аналогично uuencode. Несмотря на то, что новая кодировка больше не была шестнадцатеричной по своей природе, устоявшееся имя программы было сохранено. Файлы меньшего размера были несовместимы со старыми, поэтому расширение стало .hcx, c для компактности. Новая версия заменила предыдущие «за ночь».

BinHex 4 (.hqx)

Lempereur обеспокоен некоторыми особенностями BinHex, в частности, его использованием контрольной суммы вместо циклический контроль избыточности (CRC) и тот факт, что информация метаданных в заголовке была в виде обычного текста и, следовательно, могла быть повреждена так же, как и данные.

Чтобы решить все эти проблемы, Lempereur выпустил BinHex 4.0 в 1985 году, пропустив 3.0, чтобы избежать путаницы с давно умершей версией BASIC. 4.0 сначала объединил ветвь данных, ветвь ресурсов и метаданные файла в общий 8-битный формат, запустил кодировку длины прогона (RLE) для результата, чтобы обеспечить некоторое сжатие, а затем выполнил преобразование 8->6 на результат и защищал все с помощью нескольких CRC. Полученные файлы .hqxбыли примерно того же размера, что и файлы .hcx, но гораздо более надежными.

BinHex 5

Примерно к моменту выпуска BinHex 4 большинство онлайн-сервисов начали поддерживать надежные 8-битные протоколы передачи файлов, такие как ZMODEM, и необходимость в защите ASCII отпала. Однако это оставило проблему на Mac, поскольку все еще существовала необходимость кодировать две вилки в одну.

Результатом совместной работы программистов Macintosh, в том числе Lempereur, стал MacBinary. Это оставило содержимое вилок в их исходном 8-битном формате и добавило простой заголовок для их объединения при приеме. Таким образом, файлы MacBinary были намного меньше, чем BinHex. Lempereur выпустил BinHex 5.0, почти идентичный 4.0, за исключением того, что он использовал MacBinary для объединения вилок перед запуском кодирования 8-в-6, но, как он и ожидал, не нашел особого применения.

На Интернет, электронная почта по-прежнему оставалась основным методом перемещения файлов. В то время относительно немногие люди имели полный доступ к Интернету, и такие службы, как FTPmail, были единственным способом, с помощью которого многие пользователи могли загружать файлы. Спустя годы, впервые попав в Интернет, Лемпер с удивлением обнаружил, что BinHex 4.0 по-прежнему чрезвычайно популярен.

Те же цели могут быть достигнуты, если сначала использовать MacBinary или AppleSingle., чтобы объединить вилки, а затем использовать Uuencode или Base64 в полученном файле, но ни одно из этих решений так и не стало популярным, и BinHex 4.0 дожил до конца 1990-х годов. Файловые архивы программ классической Mac OS по-прежнему заполнены файлами BinHexed.

Формат файла BinHex 4

Глядя на содержимое файла BinHex, можно заметить, что в первой строке обычно есть сообщение, идентифицирующее его как BinHex, за которым следует множество 64-символьных строк состоящий из, казалось бы, случайных букв, цифр и знаков препинания. Вот пример того, как на самом деле выглядит BinHex:

(Этот файл необходимо преобразовать с помощью BinHex 4.0): $ f * TEQKPH # jdCA0d, R0TG! "6594% 8dP8) 3 # 3"! M! * !% EMa6593K !!% !!! mFNa KG3, r! *! $ [Rr $ 3d, BQPZD'9i, R4PFh3! RQ + !! "AV # J # 3! I !! N! @QKUjrU! # 3 ' [q 3 "4 @ 483N) f! 3 # Xaj6bV-H8mJ !!! B3! N! 0"! *! $ [3 # 3! cR @ iiY)! *! '[I% 4 !! J Fp $ X% X3 @ J! MZE6! GRiKUi $ HGKMf0U61S46% i1 "AB! TI, fLl! D1X3RDDE8ALfTCbM 8UP9p4iUqY-0k4krHpk9XK @` rbj2Ti'U @ 5rGH4 @ +-k-i'U @ 5rGH4 @ +-k-i'U @ 5rGH4 @ + -k-iXpI '($ iXpI') (N_! f8mII 01CNEbC2LrNLBeaZ1HG @ $ G8! Z6 "k) hh, q9p" r6FC * !! Se "(ic, Pd (4 (b`pflKC`H1 JN5) GVX3mREdH55 [l`%` Yhp% q092c`) $$D (hPV% q092c`A 83! L # I1aM- "VjqV-q $ 34KQq6 $ M $ f8 #, Zc, i),! (` * ZN! $ K $ rS! LA% 3cL + dYi "@, K (Z" `# 3! FKi! !!:

Должна быть текстовая строка, которая используется пользователями и инструментами для распознавания версий BinHex: (Этот файл должен быть преобразован с помощью BinHex 4.0). Любой текст перед этой строкой следует игнорировать.

Остальная часть файла состоит из трех частей: заголовка (содержащего имя файла, размер и т. д.), ветви данных (содержащей данные файла) и ветви ресурсов . Каждый имеет двухбайтовую контрольную сумму CRC.

Все, кроме строки (Этот файл... в этом случае рассматривается как область двоичных данных, которые закодированы в символы ASCII. Алгоритм кодирования говорит, что входные три байта делятся на четыре 6-битных значения, аналогично тому, как это делает Base64. Числам 0–63 присваиваются символы в соответствии со следующим списком ! "# $% '() * +, -012345689 @ ABCDEFGHIJKLMNPQRSTUVXYZ [ʻabcdefhijklmpqr

При кодировании следует вставлять после каждых 64 символов. После кодирования перед данными и после них ставится двоеточие.

Ссылки

Библиография

См. Также

Внешние ссылки

Последняя правка сделана 2021-05-12 06:22:47
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте