BinHexは、元々は「バイナリから16進数」の略で、バイナリファイルをテキストに変換するエンコーディングシステムであり、クラシックMac OSでバイナリファイルを電子メールで送信するために使用されていました。BinHexでエンコードされたファイルは元のファイルよりも容量が大きくなりますが、8ビットに対応していないソフトウェアによるデータ破損を防ぐことができます。
BinHexは元々、1981年にTim MannによってTRS-80コンピュータ向けに、他の端末のユーザー向けに、人気の端末エミュレータST80-IIIのエンコード方式のスタンドアロン版として開発されました。8ビットクリーンではないため、ASCIIアーマリングを使用する必要があったCompuServeなどの主要なオンラインサービスを介してファイルを送信するために使用されました。MannがCompuServeのTRS-80ファイルエリアにアップロードした後、このシステムは非常に人気になりました。[ 1 ]
元の方式では、バイナリファイルの内容を16進数に変換し、それをASCII数字と文字(0– 9、A– F)でエンコードし、 60文字ごとに改行を追加していました。システムはすぐに、エラーをチェックするために各行の末尾にチェックサムを追加するようになり、その後BASIC/Sコンパイラを使用するように変換されたことで、元のインタプリタ版よりもはるかに高速に実行できるようになりました。[ 1 ]
当時のBinHexファイルには、通常、ファイル拡張子が付けられていました。Apple II.hexを含む当時の他の人気コンピュータ向けにもすぐに移植版が登場しました。CompuServeが後に8ビット転送のサポートを追加すると、このフォーマットは使用されなくなりました。[ 1 ]
1984 年 1 月にMacintosh 128Kがリリースされたとき、CompuServe ではファイルアップロードの問題がまだ残っていました。4 月に、BinHex はMS BASIC for Macintoshを使用して Mac に移植されました。[ 1 ] Macintoshファイルシステムは、ファイルを「リソース フォーク」と「データ フォーク」として保存することを導入しましたが、Macintosh への移植ではファイルのデータ フォークのエンコードのみがサポートされていたため、データ ファイルでのみ使用できました。1984 年中にいくつかの新しいバージョンが公開され、両方のフォークをエンコードできる BinHex 3 が誕生しました。
Mac 用の最初のアセンブラである MacASM の作者である Yves Lempereur は、BinHex 3 をアセンブリ言語に移植し、速度を 100 倍に向上させて BinHex 1.0 としてリリースしました。[ 2 ]
オリジナルの BinHex フォーマットは単純だったため非効率的で、16 進数表現に必要な 8 ビットから 4 ビットへのエンコードで入力の各バイトを 2 に拡張していました。Lempereur は新しい 8 ビットから 6 ビットへのエンコードを実装し、ファイルサイズを 50% 削減し、チェックサムを 8 ビットから 16 ビットに拡張して、BinHex 2.0 としてリリースしました。[ 2 ]
新しいエンコーディングでは、 uuencodingと同様に、スペースを含む最初の 64 文字の ASCII 印刷文字を使用してデータを表現しました。ファイルサイズが小さくなったため、古い形式との互換性がなくなり、Lempereur はファイル拡張子を に変更しました.hcx。c はcompactを意味します。形式が 16 進数表現ではなくなったにもかかわらず、BinHex という名前は変更されませんでした。[ 2 ]
1985年、レンペルールは、BASICの同様の番号のバージョンとの混同を避けるため、3.0を飛ばしてBinHex 4.0をリリースしました。このバージョンは、次の操作シーケンスを実行しました。[ 3 ]
生成されたファイルは、BinHex 2 のファイルとほぼ同じサイズでしたが、はるかに堅牢で、ヘッダー内のメタデータ情報はプレーンテキストではなくなったため、破損から保護されていました。この新しい形式のファイル拡張子は.hqx.でした。 [ 2 ]
ほぼ同時期に、ほとんどのオンラインサービスがZMODEMなどの堅牢な8ビットファイル転送プロトコルをサポートし始めた。これによりASCIIアーマリングの必要性はなくなったが、Macintoshでは依然として2つのフォークを1つにエンコードする必要があり、MacBinaryファイル形式の開発につながった。LempereurはBinHex 5.0をリリースしたが、これはフォークを結合するためにMacBinaryを使用するという点だけが異なっていたものの、ほとんど使用されなかった。[ 2 ]
1990年代にインターネットが普及し始めた頃は、電子メールが依然としてファイルの転送の主要な手段でした。完全なアクセス権を持つ人は比較的少なく、 FTPmailのようなサービスは多くのユーザーがファイルをダウンロードする唯一の方法でした。そのため、バイナリファイルはエンコードする必要があり、BinHex 4.0は1990年代後半までエンコードのための人気ツールであり続けました。BinHexされたファイルは、今でもクラシックなMac OSソフトウェアのアーカイブで見つけることができます。[ 2 ]
BinHex ファイルは任意のテキストコンテンツで開始でき、その後にファイルの形式とバイナリデータの開始を示す行が続きます: (このファイルは BinHex 4.0 で変換する必要があります)。この行より前のテキストは、ファイルが BinHex 形式から変換されるときに無視されます。[ 3 ] [ 4 ]
バイナリデータは、7ビットASCII文字にエンコードされ、3バイトの入力(24ビット)が4つの6ビット値に分割されます。これはBase64:エンコードと似た方法ですが、異なる文字セットを使用します。エンコードされたデータの前後にはコロン()が付き、最大64文字の長さの行に分割されます。 [ 3 ]
(このファイルは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!!!: