コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
マツコウ ◆9f7F4P1Fj57R
2018/2/11 22:00
最近真面目に、組み込み型データー圧縮機(要するに、ライブラリー)作ろうかなと思っておりますた。w
どうせ、後々詰むのがおちだから。
ハフマン符号とか辞書式だとか、超いみふ。
(ついでに、配列変数1要素数に対しての数値が、&HFF(0xff)を超える数値を圧縮するしたいんですが、だれか教えてくれませんか?ソースコードも一緒にお願いします。マジで!)

コメント

アバター
あまさとしおん 2018/2/12 18:38 ◆mzDKTVUAtwqE
圧縮ばかりは「意味不でも学んでください」って感じかなぁ…
フィーリング(感覚)ではどうにもならないから、理屈を知るほか方法はないよね。
まずはRLEからはじめるのがおススメかもね。

私の場合、ハフマン符号もどきなら作ったことあるけど
辞書式の実装はやったことない…理屈をイメージするのが限界。
アバター
キルル2 2018/2/13 20:42 ◆rGE712Ruejv7
長い1次元配列にランレングス圧縮をかける際の大まかな流れです

配列の長さを調べる
カウンタ変数に0を代入する
cに0を代入する
配列の数値を取得する、この数値はデータとして記憶しておく

カウンタ変数を1だけ大きくする
配列の数値を取得する、これがデータと同じなら、cの値を1だけ大きくする、同じでなければ、フラグを立てる
フラグが立っていれば、フラグを折り、データを出力する。このときcの値が1以上であれば、もう一回データを出力し、cの値を出力し、cに0を代入する。最後に、データの値を新しく上書きする
☆まで戻って繰り返す、カウンタ変数が配列の長さと一致したら、繰り返しを抜ける
出力されたデータを保存する。これが圧縮データになる


私もよく分かってないので、全く違う流れでランレングス圧縮ができることもあるかもしれません

コメントを書く

この投稿にはコメントできません。

- WEB PATIO -