Deflate圧縮。fixedなほうのブロックは書けるようにしたんだけど、dynamicのほうのブロックは、ちょっとめんどくさいな。

literal/length用とdistance用の2種類のハフマンコード表を作る。それらの表は0から15までの数の列になる。で終わりのほうの0の連続は省略できる。

で、16が前の値の3から6回のくりかえしで、17が0の3から10回のくりかえしで、18が0の11から138のくりかえしとして、さらに表を短くできる。

その短くした表について、0から18までについてハフマン符号化する。

そうしてできた符号化表の符号化表と、それによって符号化された2つの表とをブロックの先頭につけ加えるみたいな話。

めんどい。

Reply to this note

Please Login to reply.

Discussion

いきなりこれをやるのはめんどいので、途中経過として、2種類の符号化表を圧縮しないタイプのファイル形式を定義して、それの圧縮、展開のコードを書くってのがいいのかな。