Кіріспе

BinHex, бастапқыда "бинарлықтан гексадецималға" дегеннің қысқартылған түрі, бинарлық файлдарды электрондық пошта арқылы жіберу үшін классикалық Mac OS жүйесінде қолданылған бинарлықтан мәтінге кодтау жүйесі. Алғашқыда гексадецималды кодтау болған, BinHex-тің кейінгі нұсқалары uuencode-қа ұқсас, бірақ Mac файлдық жүйенің екі "тармағын" және кеңейтілген файл туралы ақпаратты біріктірді. BinHex форматындағы файлдар түпнұсқа файлдардан көбірек орын алады, бірақ "8 бит таза" емес бағдарламалық қамтамасыздан бұзылмайды.

TRS-80 BinHex (.hex)

BinHex бастапқыда 1981 жылы Тим Манн TRS 80 үшін жазған, ол Ланс Микклз жасаған танымал терминал эмуляторы ST80 III-ге енгізілген кодтау схемасының жеке нұсқасы болды. BinHex, CompuServe сияқты ірі онлайн қызметтер арқылы файлдарды жіберу үшін қолданылды, олар "8 бит таза" болмағандықтан, сақталуы үшін ASCII қаптамасы қажет болды. Бірақ, барлығы ST 80 қолданбағандықтан, Манн BinHex-ті басқа терминалдарды пайдаланушыларға да форматты қолдануға мүмкіндік беру үшін жасады. Алғашқы ST 80 жүйесі бинарлық файлдың мазмұнын гексадецимал сандарға түрлендіріп, оларды ASCII цифрлары мен әріптері (0–9, A–F) арқылы кодтады. Содан кейін әр 60 символдан соң жаңа жол қосылды. Манн оны CompuServe-тің TRS 80 файлдар бөліміне жүктегеннен кейін жүйе кеңінен танымал болды. Жүйе тез арада әр жолдың соңына қателерді тексеру үшін тексеру сомасын қосты. Билл Стоквелл бұл нұсқаны Манннің интерпретацияланған нұсқасынан әлдеқайда жылдам жұмыс істейтін BASIC/S компиляторына аударды. BinHex файлдары сол кезде әдетте Ports деген файл кеңейтімімен сақталды. Көп ұзамай Apple II және сол дәуірдің басқа да танымал платформалары үшін де нұсқалар пайда болды. Кейін CompuServe 8 биттік жіберуді қолдады, соның салдарынан формат тез қолданыстан шықты.

Mac BinHex (.hex)

Mac 1984 жылы алғаш рет шыққан кезде CompuServe-де файлдарды жүктеу мәселесі әлі де болды. 1984 жылдың сәуірінде Уильям Дэвис BinHex-ті Mac-ке Microsoft BASIC-ті пайдаланып, сол дәуірдегі TRS 80 нұсқаларымен салыстырмалы нұсқаны көшірді. Бұл нұсқа ресурс бөлімін қаназдайтын "деректер бөлімінің" шифрлануын ғана қолдады, яғни оны дерек файлдары үшін ғана пайдалануға болады. Macintosh-тың шығуымен бірге Интернет электрондық поштасын қолдану да көбейді, ал Дэвистің нұсқасын 1984 жылдың маусым айында Джоэл Хеллер Info Mac пошта тізіміне жариялады. 1984 жылы бірнеше жаңа нұсқалар шықты, нәтижесінде BinHex 3 екі бөлімді де шифрлей алатын болды. Mac үшін алғашқы ассемблер, MacASM-нің авторы Ив Лемпьер, өз файлдарын CompuServe-ке жүктеу үшін BinHex-ті пайдалануға мәжбүр болды. BASIC нұсқасы өте баяу болғандықтан, Лемпьер BinHex 3-ті ассемблерге көшіріп, оны BinHex 1.0 ретінде шығарды. Бағдарлама BASIC нұсқасынан шамамен жүз есе жылдам болды, және көп ұзамай жаңарту туралы өтініштер көптеп түсе бастады.

Compact BinHex (.hcx)

Бастапқы BinHex өте қарапайым формат болды, ол тиімді емес еді, себебі кіріс деректегі әрбір байтты гексадецималдық бейнелеу талабына сәйкес екі есеге дейін кеңейтті – 8-ден 4 биттік кодтау. BinHex 2.0 үшін Lempereur файл мөлшерін 50%-ға дейін азайтатын жаңа 8-ден 6-ға дейінгі кодтауды пайдаланды. Ол сондай-ақ тексеру қосындысын 8 биттен 16 битке дейін кеңейту мүмкіндігін пайдаланды. Бұл жаңа кодтау деректерді көрсету үшін алғашқы 64 ASCII басылатын таңбаларды, бос орынды қоса алғанда, uuencode сияқты пайдаланды. Жаңа кодтау енді гексадецималдық сипатқа ие болмаса да, бағдарламаның бұрынғы аты сақталды. Шағын файлдар ескі файлдармен үйлесімсіз болды, сондықтан кеңейту hcx, мұндағы "c" – "жинақы" дегенді білдірді. Жаңа нұсқа бұрынғыларын "бір түнді өткізіп" толығымен алмастырды.

BinHex 4 (.hqx)

Лемпёр BinHex-тің кейбір ерекшеліктері, атап айтқанда, циклдық артық кодты тексерудің (CRC) орнына тексеру сомасын пайдалануы және бас жағындағы метадеректер ақпаратының қарапайым мәтін түрінде болуы, осылайша деректер сияқты бұзылуы мүмкін екендігі туралы алаңдады. Осы мәселелердің бәрін шешу үшін Лемпёр 1985 жылы BinHex 4.0 нұсқасын шығарды, бұрынғы, қазірде қолданылмайтын BASIC нұсқасымен шатасуды болдырмау үшін 3.0 нұсқасын өткізіп кетті. 4.0 нұсқасы алдымен деректер тармағын, ресурс тармағын және файл метадеректерін ортақ 8 биттік форматқа біріктірді, кейбір қысылуды қамтамасыз ету үшін нәтижесінде жүріс ұзындығын кодтауды (RLE) қолданды, содан кейін нәтижесінде 8 > 6 түрлендіруін жасады және барлығын бірнеше CRC арқылы қорғады. Соның нәтижесінде алынған hqx файлдары hcx файлдарымен шамамен бірдей өлшемде болды, бірақ әлдеқайда сенімдірек болды.

BinHex 5

BinHex 4 шығарылған шамамен, көптеген онлайн қызметтер ZMODEM сияқты сенімді 8 биттік файлдарды жіберу протоколдарын қолдауды бастады, соның салдарынан ASCII арнайы кодтау қажеттілігі жойылды. Дегенмен, бұл Mac жүйесінде мәселені шешпеді, себебі екі бөлімді (fork) біріктіру қажеттілігі әлі де болды. Macintosh коммуникациялық бағдарламашыларының бірлескен еңбегі, соның ішінде Lempereur, MacBinary-ге әкелді. Бұл файлдар бөлімдердің мазмұнын бастапқы 8 биттік форматта сақтап, оларды қабылдау кезінде біріктіру үшін қарапайым тақырыпша қосты; MacBinary файлдары BinHex файлдарынан әлдеқайда кіші болды. Lempereur BinHex 5.0 нұсқасын шығарды, ол 4.0 нұсқасына ұқсас болды, бірақ 8-ден 6-ға кодтауды жүргізу алдында бөлімдерді біріктіру үшін MacBinary қолданды. Ол күткендей, бұл нұсқа кеңінен қолданылмады. Интернетте электрондық пошта файлдарды таратудың басты тәсілі болып қала берді. Ол кезде Интернетке толық қол жеткізе алатын адамдар аз болды, ал FTPmail сияқты қызметтер көптеген пайдаланушылар үшін файлдарды жүктеудің жалғыз жолы еді. Бірнеше жыл өткен соң, Lempereur алғаш рет Интернетке қосылғанда, BinHex 4.0 әлі де өте танымал екеніне таң қалды. Осы мақсатқа MacBinary немесе AppleSingle арқылы екі бөлімді біріктіріп, содан кейін Uuencode немесе Base64 қолдану арқылы қол жеткізуге болар еді, бірақ ешқайсысы бұл шешімдер кеңінен танымал болған жоқ, ал BinHex 4.0 1990-шы жылдардың соңына дейін қолданыста болды. Классикалық Mac OS бағдарламалық қамтамасының файлдық архивтері әлі де BinHex форматталған файлдармен толы.