哈弗曼壓縮原理

2021-08-30 23:16:36 字數 431 閱讀 4452

1、根據輸入的字串,整理得到其權值表 佇列,權值表元素和哈弗曼樹節點可以定義為乙個類,方便建樹。

2、建立哈弗曼樹,用遞迴遍歷樹,設左1右0,得到碼表佇列。

3、根據碼表把字串轉換成由01組成的串。

4、把01串按照二進位制轉換成十進位制的方法,把每16個01串轉換成乙個整數。最後不足16個的補零至16個轉換成整數。統統放進整數陣列裡儲存,陣列最後一位儲存補零的個數。5、利用io流,把整數陣列寫入新建的檔案裡。然後還需要以一定形式儲存碼表,以便關閉程式後再次重啟時依然能讀取。

6、讀取檔案裡的整數資料,轉換成二進位制的01串儲存在char陣列裡,如果每個整數轉成的01串不足16個,要在串的前面補零,補足16位為止。倒數第二個整數轉換成01串並且補零後,根據最後乙個整數,char陣列中後面的該整數字數的元素。

7、根據讀出的碼表和讀取出來的01串,還原字串。

哈弗曼編碼 哈弗曼樹

哈弗曼編碼是依賴於字元使用頻率來建立的一種編碼,通過把使用頻率低的字元分配相對較多的01編碼,而使用頻率高的分配相對較低的01編碼,來建立最小的帶權路徑長度的樹,來最大化的獲得編碼儲存空間的一種編碼規則。這個樹稱為哈弗曼樹,也稱為最優二叉樹。這樣可以確定每乙個字元的編碼不可能成為其他字元編碼的坐子串...

哈弗曼樹與哈弗曼編碼(實現)

歷史背景 1951年,霍夫曼在mit攻讀博士學位,他和修讀資訊理論課程的同學得選擇是完成學期報告還是期末考試。導師robert fano出的學期報告題目是 查詢最有效的二進位制編碼。由於無法證明哪個已有編碼是最有效的,霍夫曼放棄對已有編碼的研究,轉向新的探索,最終發現了基於有序頻率二叉樹編碼的想法,...

哈弗曼 筆試

哈弗曼編碼幾乎是所有壓縮演算法的基礎,其實這個演算法並不複雜,簡單的理解就是,如何用更短的bit來編碼資料。我們知道普通的編碼都是定長的,比如常用的ascii編碼,每個字元都是8個bit 字元 編碼 a00101001 b00101010 c00101011 這樣,計算機就能很方便的把由0和1組成的...