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

アバター
ZEX ◆RrwFtq39WJM3
2018/2/19 2:38
ハフマン符号化をやろうとしたけど
構造体もポインタもない環境で実現方法が思い付かず悔しい。
もう頭が固いのかも知れない。

コメント

アバター
Ryou Tanpo 2018/2/19 16:17 ◆AI5iRr9FjmkJ
ハフマン符号を使った LZSS 圧縮(?)のプログラムが Petitmodem に同梱されてました

http://rei.to/petitmodem.html

…が、原理がよく分からず
アバター
Ryou Tanpo 2018/2/19 16:19 ◆AI5iRr9FjmkJ
間違ってからごめんなさい…
(まだ中学生なんで) 勉強が足りない、出直して来ます
アバター
みなつ 2018/2/20 14:31 ◆hJTkStjweib1
私は、
・構造体のメンバ毎に配列を用意する
・malloc()するときは、使用済みプールに空き要素番号があればそれを再利用、無ければメンバ毎の配列にpushして増やす
・free()するときは該当する要素に無効な値をいれつつ、使用済みプール(これも配列です)にfree()する要素番号をpushする
という感じで一度作ったことがあります(*´▽`*)

その後、ハフマン復号時の速度を稼ぐため、2分木リストを1ビットずつたどらず、配列参照で一発で復号する方法にしちゃいました(´・ω・`)
(LZSSではハフマン符号の最大符号長が制限されているので、例えば符号長が最大15bitなら、32768要素の配列を用意すれば、「考え得る全ての入力ビット列に対応するシンボル」を全部格納できてしまうのですね)

下記のライブラリは、LZSSだけじゃなくPNGの画像処理部分も入っているた不要な情報も多いと思いますが、もしよろしければ。
画像圧縮ライブラリMEG 公開キー【N3H314W3】

参考にしたサイト様:
http://darkcrowcorvus.hatenablog.jp/entry/2017/01/07/165627
アバター
ZEX 2018/2/24 17:58 ◆RrwFtq39WJM3
>・構造体のメンバ毎に配列を用意する
なるほど、あとはポインタ代わりにインデックスで扱うと。
やってみます、ありがとう。

コメントを書く

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

- WEB PATIO -