簡體   English   中英

將霍夫曼代碼輸出到文件

[英]Outputting Huffman codes to file

我有一個程序可以讀取文件並保存每個字符的頻率。 然后,它根據每個字符的頻率構造一個霍夫曼樹,然后將樹的霍夫曼代碼輸出到文件中。

因此,像“ Hello World”這樣的輸入會將以下序列輸出到文件:

01010101 0010 010 010 01010 0101010 000 01010 00101 010 0001

這是有道理的,因為最頻繁的字符具有最短的代碼。 問題是,這會使文件大小增加十倍。 我意識到了為什么是因為每個1和0在內存中都表示為自己的字符,所以它們分別被擴展為一個字節的數據。

我當時想我可以做的是將每個代碼(例如EG“ 010”)轉換為字符並將其保存到文件中-但這仍然會將代碼填充為一個字節長(如果代碼長於一個字節,則將其弄亂)字節)。

我該怎么辦? 我可以根據需要提供代碼片段-我基本上是將每個代碼保存到字符串中,這就是為什么文件很大的原因(它將每個“位”輸出為字節)。 例如,如果我要將代碼轉換為long,則將00010之類的代碼表示為2,將010之類的代碼也表示為2。

您基本上必須一次做一個字節(或一個字)。 維護一個用位填充的字節,並記錄到目前為止已填充了多少位。 當您達到8時,寫一個字節並從一個空的字節開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM