[3] 
Macintosh のファイルを ASCII の範囲の[[図形文字]]で表現する方法。

=頭, リソース・フォーク, データ・フォークをこの順に並べる。
=ランレングス圧縮する。
=6ビットごとに64進数に変換する。

* 仕様書

[REFS[
- [4] [CITE@en[[[RFC 1741]] - MIME Content Type for BinHex Encoded Files]], [TIME[2021-01-24T12:01:16.000Z]], [TIME[2021-03-16T08:58:10.779Z]] <https://tools.ietf.org/html/rfc1741>
]REFS]

*ランレングス圧縮

同じオクテット値が3つ以上続く時に、 「(オクテット値) 0x90 (オクテット数)」
とする。 0x90 自体を表現する時は、「0x90 0x00 0x90 (オクテット数)」
とする。

*64進数の字母

[5] 
[[64進数]]化は、 [[MIME]] の [[Base64]] と同じように、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実体のファイル名]])

例:

-Content-Type: application/mac-binhex40; name="car.hqx"

* 関連

[2] [[MacMIME]]

[6] [[符号化]]:
[[Base64]],
[[uuencode]],
[[ISH]]

* メモ

[1] [[内容転送符号化]] : BinHex の仕事の内容は意味的には [[CTE]] なので、 [[MIME]] で使うときに [CODE(MIME)[[[Content-Transfer-Encoding]]: [[x-binhex]]]] を使う実装もあります。[WEAK[でも、大昔に標準化済みの [CODE(MIME)[application/mac-binhex40]] が既にあって、これの方が (多分) よく実装されている以上、こっちを使うべきでしょう。[WEAK[ちなみに、 [CODE(MIME)[[[Content-Type]]: application/mac-binhex40]] かつ CTE: [CODE(MIME)[x-binhex]] としたらそれは誤りですよ。]]
