2015-10-21 77 views
0

我正在實現一個huffman庫,現在我的編碼結果爲字符串。我想隨郵件一起序列化樹,我的結果是有點這樣的:完成一個二進制文件將其轉換爲字節數組

Message: aabbccdd 
Tree output: 001011000011011000100101100011101100100 
Encoded message: 0000010110101111 
Serialized message (tree + message): 0010110000110110001001011000111011001000000010110101111 

至於第二步,我希望把這些二進制串到字節數組。問題是位數不是適合這樣做的:可能會有一些額外的位。問題是我該如何將最終輸出轉換爲一個字節數組並將其反序列化呢?

樹被編碼如下所述:Efficient way of storing Huffman tree

回答

0

除非你能保證你所有的代碼都將至少八位長,那麼你要麼需要一)有自己的代碼添加結束符號即終止消息或b)在消息的開頭添加幾位,表示在最後一個字節中有多少位有效(假設有一些其他信息來源表示消息佔用了多少字節)。否則,最後的額外位可能會被誤解爲一個或多個不是預期的附加符號。

+0

我認爲只填寫最後一位,如果不完整和編碼,但問題仍然存在解碼時,與'0'添加到墊無效的消息。如何跳過它們? – Phate01

+0

你對我的回答不瞭解嗎? –

+0

你的解決方案'開始時的幾個點'肯定不是一個好的解決方案,因爲它限制了消息的長度,所以我明白了一切,但這不是我的問題的解決方案,我希望其他人進行頭腦風暴。 – Phate01

相關問題