2011-12-31 77 views
-2

我編碼霍夫曼算法。霍夫曼算法寫入文件

我把一個文件讀入一個字符串,然後建立一個霍夫曼樹並用 編碼的數據進行編碼。

我把它放在一個新的String中,並將它寫入到新文件中,但它增加了文件的大小而不是減小它!

我知道什麼是錯的:

當輸入字符串像​​它3*8=24

然而,當它被編碼爲"000111"6*8=68

有沒有人有什麼想法?

我應該如何在輸出文件中編寫"000111"字符串,以便它只需要6位?

我正在使用Java。

請幫忙。

+2

你在這裏有一個很大的誤解。霍夫曼編碼的輸出應該是一個原始的二進制流,而不是任何正常意義上的「字符串」。你應該在做二進制I/O。這在Java中並不是微不足道的,但你應該在這裏找到大量的例子(例如http://stackoverflow.com/questions/903375/huffman-compression-algorithm)。 – Mat 2011-12-31 22:10:53

回答

1

您需要選擇一種方式先打包字節,LSB或MSB,然後使用位移運算符來實現它。並記住Java沒有無符號字節的概念,並且字符串不等同於字節數組。

1

自從我被教授關於哈夫曼編碼已經很長時間了,但我確定你編碼並保存在二進制文件中而不是二進制的字符串表示形式!