2011-12-31 26 views
-2

ハフマンアルゴリズムをコード化しました。ハフマンアルゴリズムファイルへの書き込み

ファイルを文字列に読み込んだ後、ハーフマンツリーを構築し、 エンコードデータでコードします。

私はこれを新しいStringに入れて新しいファイルに書きましたが、ファイルを減らす代わりにファイルのサイズを大きくしました!!

私が間違っているか知っている:

それはそれはそれは6*8=68ビット

ある"000111"にコード化されたときに、誰もが任意のアイデアを持っています、しかし3*8=24ビット

ある​​のように入力文字列がある場合は?

"000111"文字列を出力ファイルに書き込むと、6ビットしか必要なくなります。

私はJavaを使用しています。

お願いします。

+2

ここでは非常に大きな誤解があります。ハフマン符号化された出力は、生のバイナリストリームであり、用語の通常の意味での「文字列」ではありません。あなたはそれを使ってバイナリI/Oをやっているはずです。 Javaで行うのはそれほど簡単ではありませんが、そこにたくさんのサンプルがあるはずです(http://stackoverflow.com/questions/903375/huffman-compression-algorithmなど)。 – Mat

答えて

1

バイト、LSBまたはMSBを最初にパックし、ビットシフト演算子を使用して実装する方法を選択する必要があります。 Javaは符号なしバイトの概念を持たず、文字列はバイト配列と同等ではないことに注意してください。

1

私はハフマンエンコーディングについて教えられて以来、非常に長い時間でしたが、バイナリの文字列表現ではなく、バイナリでエンコードして保存することを確信しています!

関連する問題