Base16kエンコーダ/デコーダ

文字列にバイナリを埋め込む方法としてbase64が良く使われていますが、
バイナリを埋め込んだ文字列の 転送/格納にUTF16を使用する場合、
base64文字列をUTF16で扱うことになるため、上位8ビットが丸々0になり、
転送/格納効率が非常に悪くなります。

UTF16の場合は、base64のようにアルファベットや数字を使うよりも、
より多くの種類がある漢字を使った方が 効率が良くなるはずです。
というわけで、既存技術を探してみたところ、 base16kというものを発見しました。

base64では半角アルファベットや数字等、64種類の文字を使用するに対し、
base16kでは、Unicodeのうち、U+5000 - U+8fff の範囲にある、16384種類の文字を使用します。

この領域はCJK統合漢字と呼ばれるようで、みっちり漢字が詰まってます。

base16kエンコーダ/デコーダのサンプルプログラムを作ってみました。
boostライセンスとして公開します。