BinHex

BinHexはClassic Mac OSのファイルをASCIIのテキストへ変換するフォーマット。拡張子は.hqx。テキストのみの電話回線等の経路を使って転送する目的で開発された。かつてはバイナリ転送用のMacバイナリと並んでインターネットでも多用されたが、現在はあまり使われなくなってきている。
概要.
Classic Mac OSでは、1つのファイルがデータフォークとリソースフォークの2つで構成されており、それ以外にもFinder情報など様々なメタデータを持っている。BinHexではこれらのうち特に重要なデータフォーク、リソースフォーク、ファイル名、タイプとクリエータ、Finderフラグをアーカイブして、ASCIIのテキストに変換する。
先頭に以下のような行を付けるため、BinHexであることが判定出来る。
変換アルゴリズムはuuencodeやBase64と同様、3オクテットを4オクテット（6ビットを8ビット）に置き換えるものである。変換後はASCIIテキストとなるため、7ビットのテキストしか扱えないような経路でも転送が出来る。
データ量は約4/3に増加するが、同じオクテットが3から255個連続した場合、これを一つに纏めるという単純な圧縮方式を持っており、データ量の増加をある程度緩和できる。
CRC (Cyclic Redundancy Check)を用いているため、データの誤りを検出する事が出来る。ただし誤り訂正は出来ない。
ファイル名は63バイト迄扱う事が出来る。Mac OS 9迄は31バイトの制限があるため、これで十分であった。日本語環境の場合はファイル名はMacJapaneseで保管される。
フォーマットの詳細は、RFC 1741の後半のAppendix Aで確認出来る。
元々BinHexはアプリケーションの名称であった。最初のバージョンはTRS-80の為に作られたが、その後Classic Mac OS用の同名アプリケーションが作られた。バージョンによってフォーマットが全く異なるが、現在BinHexといった場合、まず間違いなくBinHex 4.0のフォーマットをさす。BinHex 5.0はMacバイナリフォーマットを扱うアプリケーションであり、これは7ビットテキストではなく8ビットバイナリなので注意が必要である。
現在のmacOSでは、ファイル名はUnicodeで255文字迄であり、メタデータもかつてのClassic Mac OSより種類が増えている。こうした理由からBinHexでは不十分である。
利用例.
BinHexはかつてパソコン通信でファイルを転送する用途で多用された。インターネットが主流になってからもFTPサイトや電子メールで多用された。
TCP/IPをベースとしたFTPではバイナリ転送が可能であり一見ナンセンスだが、他のパソコン通信との相互転載も行なわれたため、互換性を考慮すると有用であった。
電子メールで利用する場合、メールの本文中にBinHexのテキストを直接貼付ける手法が取られた。上で示したような行を付けるため、これを認識して添付ファイルとして扱うソフトも存在した。
後にRFC 1741が発行された。これはBinHexをMIMEの枠組みで扱えるようにしたものである。以下のようなヘッダフィールドを用いる。
多くの電子メールクライアントはこのRFC 1741を採用したが、nameパラメータの値を"testfile.hqx"ではなく"testfile"のように.hqxを付けない実装もあり、一部混乱が生じた。
なお、連番のRFCとしてRFC 1740がある。これはAppleSingleとAppleDoubleをMIMEで扱う方法を規定したものである。