今日はプログラムの話!ハフマン符号化について!

こんばんは、ダンです。

今日ふと目にした応用情報の本。

開くとハフマン符号化について説明してたんです。

確率的圧縮の何とかだよなー。あれ、あれってどうやって実装されてるんだろ?

疑問に思ったら確かめるのがプログラマーですよねっ★

ってわけで書いてみましたっ

プログラムの話題なので、興味ない人はスルーすいしょう。

さぁ、Lets!C言語でハフマン符号!間違ってたらごめんなさい!


まずハフマン符号化で知ってる本で得た知識。

ABCD4つのアルファベットがあり、それぞれ
A=50%
B=30%
C=10%
D=10%
の出現率の時
Aを0、Bを01、Cを001、Dを000で表すことで
確率が少ない物を少ないビット数で表すことによりデータ量を小さくする事ができる。

まぁ、これが僕の知ってるハフマンさんの知識でした。
これだけで情報処理技術者試験は全然問題ないんですけど、ここまで知ったら書きたくなるよね。
ってわけで自分なりに書いてみました。

最初に思いついたのが
a,b,c....,zそれぞれに1つのハフマン符号を割り当てて、圧縮すると言う方法。
でもこれじゃあアルファベット小文字以外使えないしダメだろー。
まぁいいやとりあえず書いてみよう。って事で書きました。

main.txt

まぁ、見てわかる通り途中です。

気づきました。

あー。バイナリでやればいいじゃん(´・ω・`)

って!

そしたらアルファベットとか関係なしにどんな物にでも使えるようになるし・・・。なんで先にこっち浮かばなかった、僕。

えーっと。
00,01,10,11にわけて
出現確率が
00=50%
01=30%
10=10%
11=10%
だとしたら

00を0、10を01、10を110、11を111 にすればいいのかな?

んー、でも1バイトでまとめた方が書きやすいよなー。
2^8だから、256通りかー。

もう、考えるの面倒だからかいちゃえ、←

ってわけで256通りにわけるやり方で書いてみたのがこちらっ



・・・できなかったっ★てへっ★

んー。頑張って組んでたんですけど、途中でやりかたミスったなー。って。

もう今日疲れたから明日やります(´・ω・`)

コメント

非公開コメント

プロフィール

ダンギルバ

Author:ダンギルバ
ダンです!

~連絡先~
メール:

ついったーID:dangiruba

気軽にコメントとかください(*・ω・*)
大歓迎です(*・ω・*)

4のつく日は英語で更新!かも!!
暖かく見守ってください//
間違いあったらコメントくれると助かります><

ごゆっくりご覧ください。

カレンダー
プルダウン 降順 昇順 年別

05月 | 2023年06月 | 07月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -


最新コメント
最新記事
月別アーカイブ
カテゴリ
FC2カウンター
ランキング
ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村のランキング参加してます(´・ω・)ノ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード