BinHex

BinHex

[3] Macintosh のファイルを ASCII の範囲の図形文字で表現する方法。

  1. 頭, リソース・フォーク, データ・フォークをこの順に並べる。
  2. ランレングス圧縮する。
  3. 6ビットごとに64進数に変換する。

仕様書

ランレングス圧縮

同じオクテット値が3つ以上続く時に、 「(オクテット値) 0x90 (オクテット数)」 とする。 0x90 自体を表現する時は、「0x90 0x00 0x90 (オクテット数)」 とする。

64進数の字母

[5] 64進数化は、 MIMEBase64 と同じように、6ビットごとに 区切って、それを文字で表現する。但し字母やその順序は全く異なる。

 !"#$%&'()*+,-0〜9@A〜Z[`a〜r (左から、0〜63)

識別符みたいなもの

出来上がった文字列の最初と最後に「:」をつけて、64文字ずつ 改行を挟んでわける。で、一番最初に、 「(This file must be converted with BinHex 4.0)」っていう行を つける。

媒体型 application/mac-binhex40

RFC 1741 で定義。 RFC 1741 には BinHex の説明も載ってる。

パラメーター name があって、値は mime.value。ファイル名。 だけど、これは定義された時代が古いからで、 Content-Disposition:領域の filename パラメーターを 使うべきだと。 (See MIME実体のファイル名)

例:

関連

[2] MacMIME

[6] 符号化: Base64, uuencode, ISH

メモ

[1] 内容転送符号化 : BinHex の仕事の内容は意味的には CTE なので、 MIME で使うときに Content-Transfer-Encoding: x-binhex を使う実装もあります。でも、大昔に標準化済みの application/mac-binhex40 が既にあって、これの方が (多分) よく実装されている以上、こっちを使うべきでしょう。ちなみに、 Content-Type: application/mac-binhex40 かつ CTE: x-binhex としたらそれは誤りですよ。