正規化Huffman樹在檔案壓縮專案中的應用

2021-10-03 04:57:49 字數 864 閱讀 4696

正規化huffman樹不用建立,可以利用huffman樹推到出來:

壓縮

通過huffman碼表推算出每個字元的正規化huffman編碼

讀取原始檔,將原始檔中的每個位元組按照對應的正規化huffman編碼進行改寫

壓縮檔案的格式

解壓縮

從壓縮資料中獲取符號的編碼位長,構建符號位長表

根據編碼位長建立解碼表

編碼:可以位長算出來,此處儲存成數字

符號數量:通過map或者unordered_map來進行統計

符號索引:在符號位長表中的首次出現下標

解碼

例如,輸入資料「11110」。令i = 0,此時編碼位長為2。讀取2位的資料「11」與首編碼相減等於3。3大於等於符號數量,於是i = i + 1等於1。此時編碼位長為3。讀取3位的資料「111」與首編碼相減等於1。 1大於等於符號數量,於是i = i + 1等於2。此時編碼位長為5。讀取5位的資料「11110」與首編碼相減等於2。2小於符號數量,2加符號索引4等於6。從表2.3中可以查到序號為6的符號是「e」。從而解碼出符號「e」。跳過當前已經解碼的5位資料,可以重新開始解碼下乙個符號。

利用Huffman樹實現檔案壓縮

利用huffman樹實現檔案壓縮 使用的編輯語言是c 專案目的是能夠實現對檔案的壓縮及解壓,涉及到的技術主要有huffman樹的實現,檔案的io操作,優先順序佇列等 整體思路 整個過程是依賴於huffman樹,因此要構建出乙個可供我們使用的huffman樹 壓縮時,操作原始檔,以字元形式讀取檔案資訊...

Huffman實現檔案壓縮

pragma once includeusing namespace std include huffmantree.hpp typedef long long longtype define debug 檔案資訊 struct fileinfo bool operator const filein...

huffman實現檔案壓縮

mark一下 include include include include struct headheader 512 tmp void compress printf destination filename gets outputfile ofp fopen outputfile,wb if ...