BinHex

BinHex 4
Filnamnstillägg
.hqx
Internet mediatyp


application/mac-binhex40 application/mac-binhex application/binhex
Uniform Type Identifier (UTI) com.apple.binhex-arkiv

BinHex , ursprungligen förkortning för "binary-to-hexadecimal", är ett binärt-till-text-kodningssystem som användes på det klassiska Mac OS för att skicka binära filer via e-post . Ursprungligen en hexadecimal kodning, efterföljande versioner av BinHex liknar mer uuencode , men kombinerade båda "gafflarna" i Mac-filsystemet tillsammans med utökad filinformation. BinHexed-filer tar upp mer utrymme än originalfilerna, men kommer inte att skadas av icke-" 8-bitars ren " programvara.

Historia

TRS-80 BinHex (.hex)

BinHex skrevs ursprungligen 1981 av Tim Mann för TRS-80 , som en fristående version av ett kodningsschema som ursprungligen byggdes in i en populär terminalemulator , ST80-III av Lance Micklus. BinHex användes för att skicka filer via stora onlinetjänster som CompuServe , som inte var "8-bitars rena" och krävde ASCII-bepansring för att överleva. Alla använde dock inte ST-80, så Mann skrev BinHex för att tillåta användare av andra emulatorer att använda formatet.

Det ursprungliga ST-80-systemet fungerade genom att konvertera det binära filens innehåll till hexadecimala tal, som själva kodades som ASCII- siffror och bokstäver. Den lade sedan till en ny rad efter var 60:e tecken. Systemet blev mycket populärt efter att Mann laddade upp det till CompuServes TRS-80-filområde. Systemet fick snabbt tillägget av en kontrollsumma i slutet av varje rad för att kontrollera fel. Bill Stockwell konverterade den versionen till BASIC/S-kompilatorn, som körde mycket snabbare än Manns tolkade version.

BinHex-filer från eran fick vanligtvis filtillägget .hex . Portar dök snart upp för andra populära plattformar från eran, inklusive Apple II . CompuServe lade senare till stöd för 8-bitars överföringar och formatet försvann snabbt.

Mac BinHex (.hex)

Filuppladdningsproblemet fanns fortfarande på CompuServe när Mac-datorn släpptes första gången 1984. I april 1984 porterade William Davis BinHex till Mac-datorn med hjälp av Microsoft BASIC för att producera en version som i stort sett var identisk med TRS-80-versionerna från samma era. Den här versionen stödde endast kodning av "datagaffeln" och ignorerade resursgaffeln , vilket innebar att den bara kunde användas för datafiler. Ökningen av användningen av på Internet sammanföll ungefär med lanseringen av Macintosh, och Davis version lades ut på Info-Mac sändlistan av Joel Heller i juni 1984. Flera nyare versioner publicerades under 1984, vilket resulterade i BinHex 3 som kunde koda båda gafflarna.

Yves Lempereur, författare till den första assembleraren för Mac, MacASM, fann att för att ladda upp sina filer till CompuServe var han tvungen att använda BinHex. BASIC - versionen var väldigt långsam, så Lempereur portade BinHex 3 till assembler och släppte den som BinHex 1.0. Programmet var ungefär hundra gånger så snabbt som BASIC-versionen och snart strömmade uppgraderingsförfrågningar in.

Compact BinHex (.hcx)

Det ursprungliga BinHex var ett ganska enkelt format, ett som inte var särskilt effektivt eftersom det utökade varje byte av indata till två, som krävs av den hexadecimala representationen - en 8-till-4 bitars kodning. För BinHex 2.0 använde Lempereur en ny 8-till-6-kodning som minskade filstorleken med 50 %. Han passade också på att utöka kontrollsumman från 8 till 16-bitar.

Denna nya kodning använde de första 64 ASCII-utskriftstecken, inklusive mellanslag, för att representera data, på samma sätt som uuencode . Även om den nya kodningen inte längre var hexadecimal till sin natur, behölls programmets etablerade namn. De mindre filerna var inkompatibla med de äldre, så tillägget blev .hcx , c för compact. Den nya versionen ersatte de tidigare "över natten".

BinHex 4 (.hqx)

Lempereur var orolig för några av funktionerna i BinHex, särskilt dess användning av en kontrollsumma istället för en cyklisk redundanskontroll (CRC) och det faktum att metadatainformationen i rubriken var i vanlig text och därmed kunde skadas på samma sätt som uppgifterna.

För att lösa alla dessa problem släppte Lempereur BinHex 4.0 1985 och hoppade över 3.0 för att undvika förväxling med den nu sedan länge döda BASIC-versionen. 4.0 kombinerade först datagaffeln, resursgaffeln och filmetadata till ett vanligt 8-bitarsformat, körde körlängdskodning (RLE) på resultatet för att ge viss komprimering och körde sedan 8->6-konverteringen på resultatet och skyddade allt med flera CRC. De resulterande .hqx- filerna var ungefär lika stora som .hcx -filerna, men mycket mer robusta.

BinHex 5

Ungefär när BinHex 4 släpptes började de flesta onlinetjänster stödja robusta 8-bitars filöverföringsprotokoll som ZMODEM , och behovet av ASCII-bepansring försvann. Detta lämnade dock ett problem på Mac, eftersom det fortfarande fanns ett behov av att koda de två gafflarna till en.

En laginsats bland Macintosh-kommunikationsprogrammerare, inklusive Lempereur, resulterade i MacBinary . Dessa .bin -filer lämnade innehållet i gafflarna i sitt ursprungliga 8-bitarsformat och lade till en enkel rubrik för att kombinera dem vid mottagning; MacBinary-filer var alltså mycket mindre än BinHex. Lempereur släppte BinHex 5.0, nästan identisk med 4.0 med undantaget att den använde MacBinary för att kombinera gafflarna innan man körde 8-till-6-kodningen. Detta var lite nytta, som han förväntade sig.

Internet var e-post fortfarande den primära metoden för att flytta filer. På den tiden hade relativt få människor full tillgång till Internet, och tjänster som FTPmail var det enda sättet många användare kunde ladda ner filer. År senare när han först kom in på Internet, blev Lempereur förvånad över att finna att BinHex 4.0 fortfarande var extremt populär.

Samma mål kunde uppnås genom att först använda MacBinary eller AppleSingle för att kombinera gafflarna och sedan använda Uuencode eller Base64 på den resulterande filen, men ingen av dessa lösningar blev någonsin populär och BinHex 4.0 överlevde långt in i slutet av 1990-talet. Filarkiv för klassiska Mac OS -program är fortfarande fyllda med BinHexed-filer.

BinHex 4 filformat

När man tittar på innehållet i en BinHex-fil kommer man att märka att den vanligtvis har ett meddelande på första raden som identifierar den som BinHex, följt av många rader med 64 tecken som består av till synes slumpmässiga bokstäver, siffror och skiljetecken. Här är ett exempel på hur BinHex faktiskt ser ut:

(Den här filen måste konverteras med 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&01CNLBeaG@hzg2h9p,$9000,01CNEbG@900000000000000000000001 "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!!!:

Det måste finnas en textrad som används av användare och verktyg för att känna igen BinHex-versioner: ( Denna fil måste konverteras med BinHex 4.0) . All text före denna rad ska ignoreras.

Resten av filen består av tre delar, en rubrik (som innehåller filnamn, storlek etc.), en datagaffel (som innehåller fildata) och en resursgaffel . Var och en har en två-byte CRC- kontrollsumma.

Allt utom raden (Denna fil ... ses sedan som ett område med binär data, som kodas till ASCII-tecken. Kodningsalgoritmen säger att tre byte som inmatas delas in i fyra 6-bitars värden, på ett sätt som liknar sätt som Base64 gör. Nummer 0–63 ges tecken enligt följande lista !"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr

Vid kodning, a ska infogas efter var 64:e tecken. Efter kodning placeras ett kolon före och efter data.

Bibliografi

Se även

externa länkar