看板 C_and_CPP 關於我們 聯絡資訊
可以利用 byte 來儲存你的編碼 就用你說的例子來講吧 編碼前:ACDABA  (8bit * 6 = 48 bits) 編碼後:01101110100 (11 bits) 要真的編碼進去成為11位元的話 你可以用 byte 這個型態來儲存編碼 byte 的 size 是 8bits 所以要把你的編碼以8位元為一個單位儲存 01101110 = 110(十進位) 0100 = 4(十進位) 因此你該存的檔案室byte型態的110和4 ex: byte code[2]; code[0]=110; code[1]=4; ..... 這樣你的編碼前後所佔的空間就少了 48-16=32 bit 了 想當然而,你存的txt檔裡面的東西會變成你看不懂的文字 這是正常的,不用擔心! 儲存的方法很多,我提的只是一種最簡單的方法供你做思考 不用在意你當初忽視這個基礎的東西 很多東西本來就是多寫多看多練才發現其中的奧妙 多跟人交流吧! 會讓你程式能力進步很快的! ※ 引述《gn123 (GnCtIlike)》之銘言: : 小弟最近在寫霍夫曼壓縮 : 照他的說明: : "假設想要壓縮下面這段資料:ACDABA : 因為它有 6 個英文字元,所以這串文字占用 6 個位元組 (Bytes) 或 48 各位元 (Bits) : 壓縮後的資料變成:01101110100 (經過霍夫曼樹後) : 這表示只用了 11 個位元就可以取代了 48 個位元 => 達成壓縮目的" : 我是讀進txt檔案 經過運算後輸出txt檔案 : 可是看了看文件內容... 原本:6個位元組(ACDABA型態) : 輸出後:11個位元組(01101110100) 崩潰... : 怎越壓越大QQ 是說霍夫曼CODE不適用於txt檔案嗎(已經是純文字)?? : 還是我的輸出格式有問題 ~(我是用fout輸出,每個字的霍夫曼編碼存在不同char陣列裡面) : 有點想不通 想請教各位高手~~ 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.111.129.79
gn123:好的,謝謝指教><~ 06/04 17:11
diabloevagto:版上好人很多! 06/04 20:32
gn123:真的很感謝板上熱心的人>< 06/04 20:35