usakdsteen

ゆうさくですてぃーん

今やってることと言えば

なんかファイル圧縮みたいなのに興味が多少あって

まぁごく単純な感じの参考文献とかは未だ漁ってないのだけど

やってるわ

簡単に言えば、ファイルデータを1バイトごと読み込んで

その1バイトのデータを2ビットごとに区切って

その2ビットデータの統計を取って

ある程度の量差があれば何とかって方法で置き換えるみたいな?

(この変換方法は過去に自分で思いついたことあったんだが

 さすがに単純で簡単な発想なので、はるか昔の人が発見して名前がついてるみたいなのね

 大学の授業で知りましたよ。名前とか。今ではもっと発展してるみたいだけど

 まぁ現代なら誰でも思いつきそうなレベルのことだから普通っちゃ普通だけど)

たとえば、ファイル全体で2ビットデータが

00が7割、10が2割、11と01が1割ずつだったとしたら

00を0、10を10、01を110、11を111に置き換えて保存すると

見事、サイズを圧縮できるのだよ。(たいした圧縮率にならないけど)

しかも全てのファイル圧縮できるんじゃなくて

2ビットデータの構成がある程度限られるのでね

簡単に言えば、一番多い2ビットパターンの数と

少ないほうの2つの2ビットパターンの合計数の差にしたがって決まるのだけどね

まぁ練習としちゃこんなレベルでいいのよ。全く実用性も無いし

最新の公開されてる圧縮アルゴリズムで組んで作ったほうが身のためだろうけど

調べるの面倒だし、自分で何か考えて作り出したいっていうか

まぁ頑張ってみるわ。

今のところ圧縮したファイルを出力はしてるが

そのファイルが果たして正常に復元できるかは定かでない

これから復元のプログラム作るから

それでちゃんと復元できればいいんだけどね・・・

ちなみにこの圧縮繰り返してかければさらに圧縮できる時あるけど

限界まで繰り返しても、既存の圧縮アルゴリズムの足元にも及ばないって感じ

同じファイルをLHAとかZIPで圧縮するとすごく圧縮されててすごかった

当たり前だけどw