[問題] 霍夫曼編碼
小弟最近在寫霍夫曼壓縮
照他的說明:
"假設想要壓縮下面這段資料:ACDABA
因為它有 6 個英文字元,所以這串文字占用 6 個位元組 (Bytes) 或 48 各位元 (Bits)
壓縮後的資料變成:01101110100 (經過霍夫曼樹後)
這表示只用了 11 個位元就可以取代了 48 個位元 => 達成壓縮目的"
我是讀進txt檔案 經過運算後輸出txt檔案
可是看了看文件內容... 原本:6個位元組(ACDABA型態)
輸出後:11個位元組(01101110100) 崩潰...
怎越壓越大QQ 是說霍夫曼CODE不適用於txt檔案嗎(已經是純文字)??
還是我的輸出格式有問題 ~(我是用fout輸出,每個字的霍夫曼編碼存在不同char陣列裡面)
有點想不通 想請教各位高手~~ 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.66.184
推
06/04 04:11, , 1F
06/04 04:11, 1F
→
06/04 08:02, , 2F
06/04 08:02, 2F
推
06/04 08:04, , 3F
06/04 08:04, 3F
推
06/04 08:42, , 4F
06/04 08:42, 4F
推
06/04 11:30, , 5F
06/04 11:30, 5F
喔喔!! 不知道我這樣理解對不對?
原文: ABCDEFG....
轉碼後: 01101010111000...
*轉2進位: (01101010)(10110001)(110....
|| ||
一位元 一位元
=> 達到壓縮目的@@???
※ 編輯: gn123 來自: 140.113.66.184 (06/04 11:42)
推
06/04 12:07, , 6F
06/04 12:07, 6F
→
06/04 12:08, , 7F
06/04 12:08, 7F
→
06/04 12:08, , 8F
06/04 12:08, 8F
→
06/04 12:58, , 9F
06/04 12:58, 9F
→
06/04 13:03, , 10F
06/04 13:03, 10F
→
06/04 13:04, , 11F
06/04 13:04, 11F
我現在雖然懂了如何變小,可是不知道怎把我編碼轉成1位元的2進位編碼QQ
比方說,下列是文章單字經過Huffman Tree轉換的編碼:
A: 0000
B: 0101010101
C: 110000
D: 101111000
...
這些編碼我存在char [] 裡面
可是剛剛查了一堆資料越搞越混,不知道怎樣才叫做"轉成1位元"???
請教版上高手~謝謝
※ 編輯: gn123 來自: 140.113.66.184 (06/04 13:20)
→
06/04 13:41, , 12F
06/04 13:41, 12F
→
06/04 13:41, , 13F
06/04 13:41, 13F
→
06/04 13:51, , 14F
06/04 13:51, 14F
→
06/04 13:52, , 15F
06/04 13:52, 15F
→
06/04 13:53, , 16F
06/04 13:53, 16F
→
06/04 13:59, , 17F
06/04 13:59, 17F
→
06/04 14:00, , 18F
06/04 14:00, 18F
→
06/04 14:00, , 19F
06/04 14:00, 19F
→
06/04 14:00, , 20F
06/04 14:00, 20F
→
06/04 14:01, , 21F
06/04 14:01, 21F
→
06/04 14:01, , 22F
06/04 14:01, 22F
→
06/04 14:02, , 23F
06/04 14:02, 23F
→
06/04 14:03, , 24F
06/04 14:03, 24F
→
06/04 14:08, , 25F
06/04 14:08, 25F
推
06/04 17:52, , 26F
06/04 17:52, 26F
推
06/04 17:58, , 27F
06/04 17:58, 27F
討論串 (同標題文章)