64進数
家にも開発環境はあるんだけど、どうしても遊んでしまうので、学校へ。使い道が多いと思われるbase64エンコードのプログラムを書いてみた。
base64ってのはメールの添付ファイルを確実に相手へ届ける仕組みとして規格化された技術で、メール以外にも幅広く使われてます。BASE64
(e-Words
)
64種類+1種類の文字をそれぞれ0~64の数値として扱う仕組み。64進数化するので、base64という任天堂のゲーム機みたいな名前になってるわけ。
この65種類の文字はどんなコンピュータ(処理系のほうが表現としては適切)でも扱える文字ということで決まったぽい。
実際の仕組みは3バイトのデータを4バイトに膨らませてるだけ。シンプル。データに25%増しの冗長性を持たせて確実に通信するというコンセプト…で合ってるのかすら。定義されてるRFCは未読なので知らんけど。
で。こしらえてみた。
情報系の学生のクセにビット演算でずいぶんてこずる。やっぱり僕は根本的には頭の回転がよろしくないようで、エンコーダはテスト含めて6時間。時間がかかったぶんエレガントなコードになったと思いたい。意図的に汎用C++で書いたのでそのうちここに公開します。
デコーダはエレガントなクラスインタフェースが思いつかないため、明日以降へ保留。
符号化の仕組みが出来たので、数年来の懸案であったアレをこしらえることができます。ま、出来上がってからのお楽しみということで。





