BinHex
Rozszerzenie nazwy pliku |
.hqx
|
---|---|
Rodzaj mediów internetowych |
aplikacja/mac-binhex40 aplikacja/mac-binhex aplikacja/binhex |
Jednolity identyfikator typu (UTI) | com.apple.binhex-archive |
BinHex , pierwotnie skrót od „binary-to-hexadecimal”, to system kodowania binarnego na tekst , który był używany w klasycznym systemie Mac OS do wysyłania plików binarnych pocztą e-mail . Pierwotnie szesnastkowe , kolejne wersje BinHex są bardziej podobne do uuencode , ale łączyły oba „rozwidlenia” systemu plików Mac wraz z rozszerzonymi informacjami o plikach. Pliki BinHexed zajmują więcej miejsca niż oryginalne pliki, ale nie zostaną uszkodzone przez oprogramowanie inne niż „ 8-bit clean ”.
Historia
TRS-80 BinHex (.hex)
BinHex został pierwotnie napisany w 1981 roku przez Tima Manna dla TRS-80 , jako samodzielna wersja schematu kodowania pierwotnie wbudowanego w popularny emulator terminala , ST80-III autorstwa Lance'a Micklusa. BinHex był używany do wysyłania plików za pośrednictwem głównych usług online , takich jak CompuServe , które nie były „czyste 8-bitowe” i wymagały zbrojenia ASCII , aby przetrwać. Jednak nie wszyscy używali ST-80, więc Mann napisał BinHex, aby umożliwić użytkownikom innych emulatorów korzystanie z formatu.
Oryginalny system ST-80 działał na zasadzie konwersji zawartości pliku binarnego na liczby szesnastkowe , które same były zakodowane jako cyfry i litery ASCII . Następnie dodał nową linię po każdych 60 znakach. System stał się bardzo popularny po tym, jak Mann przesłał go do obszaru plików TRS-80 firmy CompuServe. System szybko zyskał możliwość dodania sumy kontrolnej na końcu każdej linii w celu sprawdzenia błędów. Bill Stockwell przekonwertował tę wersję na kompilator BASIC/S, który działał znacznie szybciej niż interpretowana wersja Manna.
Pliki BinHex z tamtej epoki miały zazwyczaj rozszerzenie .hex . Wkrótce pojawiły się porty na inne popularne platformy tamtej epoki, w tym na Apple II . CompuServe dodał później obsługę transferów 8-bitowych i format szybko zniknął.
Mac BinHex (.hex)
Problem z przesyłaniem plików nadal istniał w CompuServe, kiedy komputer Mac został wydany po raz pierwszy w 1984 r. W kwietniu 1984 r. William Davis przeportował BinHex na komputer Mac przy użyciu Microsoft BASIC , aby stworzyć wersję, która była w dużej mierze identyczna z wersjami TRS-80 z tej samej epoki. Ta wersja obsługiwała tylko kodowanie „rozwidlenia danych”, ignorując rozwidlenie zasobów , co oznaczało, że można go używać tylko do plików danych. Wzrost wykorzystania internetowej poczty e-mail zbiegł się mniej więcej z wypuszczeniem komputera Macintosh, a wersja Davisa została opublikowana na liście mailingowej Info-Mac przez Joela Hellera w czerwcu 1984 r. Kilka nowszych wersji zostało opublikowanych w 1984 r., w wyniku czego BinHex 3 to może zakodować oba rozwidlenia.
Yves Lempereur, autor pierwszego asemblera dla komputerów Mac, MacASM, stwierdził, że aby przesłać swoje pliki do CompuServe, musiał użyć BinHex. Wersja BASIC była bardzo powolna, więc Lempereur przeportował BinHex 3 do asemblera i wydał go jako BinHex 1.0. Program był mniej więcej sto razy szybszy niż wersja BASIC i wkrótce zaczęły napływać prośby o uaktualnienie.
Kompaktowy BinHex (.hcx)
Oryginalny BinHex był dość prostym formatem, który nie był zbyt wydajny, ponieważ rozszerzał każdy bajt danych wejściowych na dwa, zgodnie z wymaganiami reprezentacji szesnastkowej — kodowania od 8 do 4 bitów. W przypadku BinHex 2.0 firma Lempereur zastosowała nowe kodowanie od 8 do 6, które zmniejszyło rozmiar pliku o 50%. Skorzystał również z okazji, aby rozszerzyć sumę kontrolną z 8 do 16 bitów.
To nowe kodowanie wykorzystywało pierwsze 64 znaki drukarskie ASCII, w tym spację, do reprezentowania danych, podobnie jak uuencode . Mimo że nowe kodowanie nie miało już szesnastkowego , zachowano ustaloną nazwę programu. Mniejsze pliki były niekompatybilne ze starszymi, więc rozszerzenie stało się .hcx , c dla kompaktowego. Nowa wersja zastąpiła wcześniejsze „z dnia na dzień”.
BinHex 4 (.hqx)
Lempereur miał obawy co do niektórych funkcji BinHex, w szczególności użycia sumy kontrolnej zamiast cyklicznej kontroli redundancji (CRC) oraz faktu, że informacje o metadanych w nagłówku były zwykłym tekstem, a zatem mogły zostać uszkodzone w taki sam sposób jak dane.
Aby rozwiązać wszystkie te problemy, Lempereur wypuścił BinHex 4.0 w 1985 roku, pomijając wersję 3.0, aby uniknąć pomyłki z dawno nieżyjącą już wersją BASIC. 4.0 najpierw połączył rozwidlenie danych, rozwidlenie zasobów i metadane pliku we wspólny format 8-bitowy, uruchomił kodowanie długości przebiegu (RLE) na wyniku, aby zapewnić pewną kompresję, a następnie przeprowadził konwersję 8->6 na wyniku i zabezpieczył wszystko z wieloma CRC. Wynikowe .hqx
miały mniej więcej ten sam rozmiar co pliki .hcx
, ale były znacznie bardziej niezawodne.
BinHex 5
Mniej więcej w czasie, gdy wypuszczono BinHex 4, większość usług online zaczęła obsługiwać solidne 8-bitowe protokoły przesyłania plików, takie jak ZMODEM , a potrzeba zbrojenia ASCII zniknęła. Pozostawiło to jednak problem na komputerze Mac, ponieważ nadal istniała potrzeba zakodowania dwóch rozwidleń w jeden.
Wysiłek zespołu programistów komunikacyjnych Macintosh, w tym Lempereur, zaowocował MacBinary . Te .bin
pozostawiły zawartość rozwidleń w ich oryginalnym 8-bitowym formacie i dodały prosty nagłówek do łączenia ich przy odbiorze; Pliki MacBinary były więc znacznie mniejsze niż BinHex. Lempereur wypuścił BinHex 5.0, prawie identyczny z 4.0, z wyjątkiem tego, że użył MacBinary do połączenia widełek przed uruchomieniem kodowania 8-do-6. To nie przyniosło większego pożytku, tak jak się spodziewał.
W Internecie e-mail był nadal podstawową metodą przenoszenia plików. W tamtym czasie stosunkowo niewiele osób miało pełny dostęp do Internetu, a usługi takie jak FTPmail były jedynym sposobem, w jaki wielu użytkowników mogło pobierać pliki. Wiele lat później, kiedy po raz pierwszy wszedł do Internetu, Lempereur ze zdziwieniem stwierdził, że BinHex 4.0 jest nadal niezwykle popularny.
Te same cele można osiągnąć, najpierw używając MacBinary lub AppleSingle do połączenia widełek, a następnie używając Uuencode lub Base64 w pliku wynikowym, ale żadne z tych rozwiązań nigdy nie stało się popularne, a BinHex 4.0 przetrwał aż do późnych lat 90. Archiwa plików klasycznego oprogramowania Mac OS są nadal wypełnione plikami BinHexed.
Format pliku BinHex 4
Patrząc na zawartość pliku BinHex, można zauważyć, że zwykle w pierwszym wierszu znajduje się komunikat identyfikujący go jako BinHex, po którym następuje wiele 64-znakowych linii składających się z pozornie przypadkowych liter, cyfr i znaków interpunkcyjnych. Oto próbka tego, jak naprawdę wygląda BinHex:
(Ten plik musi zostać przekonwertowany za pomocą 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!!!:
Musi istnieć linia tekstu, która jest używana przez użytkowników i narzędzia do rozpoznawania wersji BinHex: (Ten plik musi zostać przekonwertowany za pomocą BinHex 4.0)
. Każdy tekst przed tym wierszem należy zignorować.
Reszta pliku składa się z trzech części, nagłówka (zawierającego nazwę pliku, rozmiar itp.), rozwidlenia danych (zawierającego dane pliku) i rozwidlenia zasobów . Każdy ma dwubajtową CRC .
Wszystko poza wierszem (Ten plik
... jest wtedy postrzegane jako obszar danych binarnych, które są zakodowane do znaków ASCII. Algorytm kodowania mówi, że trzy bajty wejściowe są podzielone na cztery wartości 6-bitowe, w sposób podobny do sposób, w jaki robi to Base64 . Numerom 0–63 nadawane są znaki zgodnie z poniższą listą !"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr
Podczas kodowania A należy wstawić po każdych 64 znakach. Po zakodowaniu dwukropek jest umieszczany przed i po danych.
Bibliografia
- Mann, Tim. „Prehistoria BinHex” .
- Lempereur, Yves (25 listopada 1997). „Prehistoria BinHex” .
Zobacz też
- Kodowanie binarne na tekst w celu porównania różnych algorytmów kodowania
Linki zewnętrzne
- Definicja BinHex 4.0 — Peter N Lewis, sierpień 1991.
- Convert::BinHex , moduł Perla do kodowania i dekodowania plików BinHex
- macutils , konwertuje między różnymi kodowaniami plików Macintosh dla systemu UNIX
- UUDeview , wieloplatformowy dekoder wiersza poleceń
- Koder/dekoder BinHex online