БинХекс
Расширение имени файла |
.hqx |
---|---|
Тип интернет-СМИ |
приложение/mac-binhex40 приложение/mac-binhex приложение/binhex |
Единый идентификатор типа (UTI) | com.apple.binhex-архив |
BinHex , изначально сокращенное от «двоичное преобразование в шестнадцатеричное», представляет собой систему кодирования двоичного кода в текст , которая использовалась в классической Mac OS для отправки двоичных файлов по электронной почте . Первоначально это была шестнадцатеричная кодировка, последующие версии BinHex больше похожи на uuencode , но объединили обе «вилки» файловой системы Mac вместе с расширенной информацией о файлах. Файлы BinHexed занимают больше места, чем исходные файлы, но не будут повреждены программным обеспечением, отличным от « 8-битного чистого ».
История
[ редактировать ]TRS-80 BinHex (.hex)
[ редактировать ]BinHex был первоначально написан в 1981 году Тимом Манном для TRS-80 как автономная версия схемы кодирования, изначально встроенной в популярный эмулятор терминала ST80-III Ланса Миклуса . BinHex использовался для отправки файлов через основные онлайн-сервисы , такие как CompuServe , которые не были «8-битными» и требовали защиты ASCII для выживания . Однако не все использовали ST-80, поэтому Манн написал BinHex, чтобы позволить пользователям других терминалов использовать этот формат. [1]
Исходная система ST-80 работала путем преобразования содержимого двоичного файла в шестнадцатеричные числа, которые кодировались как ASCII ( цифры и буквы 0
– 9
, A
– F
). Затем он добавлял новую строку после каждых 60 символов. Система стала очень популярной после того, как Манн загрузил ее в файловую область TRS-80 CompuServe. Система быстро добавила контрольную сумму в конце каждой строки для проверки на наличие ошибок. Билл Стоквелл преобразовал эту версию в компилятор BASIC/S, который работал намного быстрее, чем интерпретированная версия Манна. [1]
Файлам BinHex той эпохи обычно присваивалось расширение. .шестнадцатеричный . Вскоре появились порты для других популярных платформ той эпохи, включая Apple II . Позже CompuServe добавила поддержку 8-битной передачи, и этот формат быстро исчез. [1]
Mac BinHex (.hex)
[ редактировать ]Проблема с загрузкой файлов все еще существовала на CompuServe, когда Mac был впервые выпущен в 1984 году. В апреле 1984 года Уильям Дэвис портировал BinHex на Mac с использованием Microsoft BASIC, чтобы создать версию, которая во многом была идентична версиям TRS-80 той же эпохи. [1] Эта версия поддерживала только кодирование «вилки данных», игнорируя вилку ресурса , что означало, что ее можно было использовать только для файлов данных. Рост использования электронной почты в Интернете примерно совпал с выпуском Macintosh, и версия Дэвиса была размещена в Info-Mac списке рассылки Джоэлом Хеллером в июне 1984 года. В 1984 году было опубликовано несколько новых версий, в результате чего появился BinHex 3, который мог бы закодировать обе вилки.
Ив Лемперёр, автор первого ассемблера для Mac, MacASM, обнаружил, что для загрузки файлов на CompuServe ему приходится использовать BinHex. Версия BASIC была очень медленной, поэтому Лемпер портировал BinHex 3 на ассемблер и выпустил ее как BinHex 1.0. Программа была примерно в сто раз быстрее версии BASIC, и вскоре запросы на обновление посыпались потоком. [2]
Компактный BinHex (.hcx)
[ редактировать ]Исходный формат BinHex был довольно простым, но не очень эффективным, поскольку расширял каждый входной байт на два, как того требует шестнадцатеричное представление — кодировка 8–4 бита. Для BinHex 2.0 Лемперёр использовал новую кодировку 8-6, которая уменьшила размер файла на 50%. Он также воспользовался возможностью расширить контрольную сумму с 8 до 16 бит. [2]
В этой новой кодировке для представления данных использовались первые 64 печатных символа ASCII, включая пробел. [3] аналогично uuencode . Несмотря на то, что новая кодировка уже не носила шестнадцатеричный характер, устоявшееся название программы было сохранено. Меньшие файлы были несовместимы со старыми, поэтому расширение стало .hcx , c, что означает компактный. Новая версия заменила предыдущие «в одночасье». [2]
БинХекс 4 (.hqx)
[ редактировать ]У Лемперера были опасения по поводу некоторых особенностей BinHex, в частности, использования контрольной суммы вместо проверки циклическим избыточным кодом (CRC) и того факта, что информация метаданных в заголовке была в виде обычного текста и, следовательно, могла быть повреждена таким же образом, как и в случае с BinHex . данные. [2]
Чтобы решить все эти проблемы, Лемперёр выпустил BinHex 4.0 в 1985 году, пропустив версию 3.0, чтобы избежать путаницы с давно умершей версией BASIC. Версия 4.0 сначала объединила ветвь данных, ветвь ресурса и метаданные файла в общий 8-битный формат, запустила кодирование длины серии (RLE) для результата, чтобы обеспечить некоторое сжатие, а затем выполнила преобразование 8->6 результата и защитила его. все с несколькими CRC. В результате .hqx
файлы были примерно такого же размера, как и .hcx
х, но гораздо более надежный. [2]
БинХекс 5
[ редактировать ]Примерно в то время, когда был выпущен BinHex 4, большинство онлайн-сервисов начали поддерживать надежные 8-битные протоколы передачи файлов, такие как ZMODEM , и необходимость в защите ASCII отпала. Однако это создало проблему для Mac, поскольку по-прежнему существовала необходимость кодировать две вилки в одну.
Результатом командных усилий программистов связи Macintosh, включая Лемпера, стал MacBinary . Эти .bin
файлы оставили содержимое форков в исходном 8-битном формате и добавили простой заголовок для их объединения при приеме; Таким образом, файлы MacBinary были намного меньше, чем BinHex. Lempereur выпустил BinHex 5.0, почти идентичный версии 4.0, за исключением того, что он использовал MacBinary для объединения вилок перед запуском кодирования 8-6. Как он и ожидал, от этого не было никакой пользы. [2]
В Интернете электронная почта по-прежнему оставалась основным способом перемещения файлов. В то время относительно немногие люди имели полный доступ к Интернету, и такие службы, как FTPmail, были единственным способом, с помощью которого многие пользователи могли загружать файлы. Спустя годы, впервые попав в Интернет, Лемперёр с удивлением обнаружил, что BinHex 4.0 по-прежнему пользуется огромной популярностью. [2]
Того же результата можно было достичь, сначала используя MacBinary или AppleSingle для объединения вилок, а затем используя Uuencode или Base64 для полученного файла, но ни одно из этих решений так и не стало популярным, и BinHex 4.0 дожил до конца 1990-х годов. Файловые архивы классического программного обеспечения Mac OS по-прежнему заполнены файлами BinHexed.
Формат файла BinHex 4
[ редактировать ]Глядя на содержимое файла BinHex, можно заметить, что в первой строке обычно есть сообщение, идентифицирующее его как BinHex, за которым следует множество 64-символьных строк, состоящих из, казалось бы, случайных букв, цифр и знаков препинания. Вот пример того, как на самом деле выглядит BinHex:
(This file must be converted with 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@5rGH@+[fr-i4T6-qXpfl26,k!H5$Nml TIkI'(l3GI4)f8mII&01CNEbC2LrNLBeaZ1HG@$G8!Z6"k)hh,q9p"r6FC*!!Se" (ic,Pd(4(b`pflKC`H1&JN5)GVX3mREdH55[l`%`Yhp%q092c`A(hPV)!83Dr&f4 $$L#I1aM-"VjqV-q$34KQq6$M$f8#,Zc,i),!(`*ZN!$K$rS!LA%3cL+dYi"@,K( Z"`#3!fKi!!!:
Должна быть текстовая строка, которая используется пользователями и инструментами для распознавания версий BinHex: (This file must be converted with BinHex 4.0)
.
Любой текст перед этой строкой игнорируется. [4]
Остальная часть файла состоит из трех частей: заголовка (содержащего имя файла, размер и т. д.), ветви данных (содержащей данные файла) и ветви ресурса . Каждый из них имеет двухбайтовую контрольную сумму CRC .
Все, кроме (This file
... строка тогда рассматривается как область двоичных данных, закодированных символами ASCII. Алгоритм кодирования говорит, что три входных байта делятся на четыре 6-битных значения, аналогично тому, как это делает Base64 . Числам 0–63 присвоены символы согласно следующему списку. !"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr
При кодировании <return> следует вставлять после каждых 64 символов. После кодирования перед и после данных ставится двоеточие.
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д Манн .
- ^ Перейти обратно: а б с д и ж г Император 1997 .
- ^ Например, исходный код версии CWI
hexbin
включен в macutils , вhecx.c
строка 187 использует выражение((c)-0x20) & 0x3f
чтобы получить числовое значение цифры HCX со значением ASCIIc
. - ^ Тип содержимого RFC 1741 MIME для файлов в кодировке BinHex. Фальтстрем П., Крокер Д. и Фэйр Э. (декабрь 1994 г.).
Библиография
[ редактировать ]- Манн, Тим. «Предыстория BinHex» .
- Император Ив (25 ноября 1997 г.). «Предыстория BinHex» .
См. также
[ редактировать ]- Кодирование двоичного текста в текст для сравнения различных алгоритмов кодирования.
Внешние ссылки
[ редактировать ]- Определение BinHex 4.0 — Питер Н. Льюис, август 1991 г.
- Convert::BinHex — модуль Perl для кодирования и декодирования файлов BinHex.
- macutils , преобразует различные кодировки файлов Macintosh для UNIX.
- UUDeview , кроссплатформенный декодер командной строки
- Онлайн-кодер/декодер BinHex