Deflate圧縮。fixedなほうのブロックは書けるようにしたんだけど、dynamicのほうのブロックは、ちょっとめんどくさいな。
literal/length用とdistance用の2種類のハフマンコード表を作る。それらの表は0から15までの数の列になる。で終わりのほうの0の連続は省略できる。
で、16が前の値の3から6回のくりかえしで、17が0の3から10回のくりかえしで、18が0の11から138のくりかえしとして、さらに表を短くできる。
その短くした表について、0から18までについてハフマン符号化する。
そうしてできた符号化表の符号化表と、それによって符号化された2つの表とをブロックの先頭につけ加えるみたいな話。
めんどい。
いきなりこれをやるのはめんどいので、途中経過として、2種類の符号化表を圧縮しないタイプのファイル形式を定義して、それの圧縮、展開のコードを書くってのがいいのかな。
Please Login to reply.
No replies yet.