私はC++でハフマンエンコーディングを実装しています。ハフマンツリーを正常に構築でき、文字列をエンコード/デコードできます。ハフマンコードをC++でコーディング
私がやりたいことは、ファイルをエンコード/デコードできることですが、いくつか問題があります。 私はコードワードを含むためにブールベクトルを使用しています。私の問題は次のとおりです。バイトをファイルに書き込むことしかできません。どのようにビットごとに書きますか?おそらく私が使用できるライブラリはありますか?
もう1つは、ファイルをデコードする場合、ツリー自体(またはコードテーブル)が必要なことです。ツリーを直列化する最良の方法は何ですか?
ご協力いただければ幸いです。
2つの選択肢があります。ビットをバイトにエンコードします。または1ビットあたり1バイトを使用します。 –
これはフォーマットの仕様なので、あなたが望むことをしてください。ビットをきつくパックしたい場合は、一度に8ビットを書き込むビットベクタを結合します。コードをバイト単位で書きたい場合は、それを行います。ツリーを配列(ツリートラバーサルを見る)またはエッジリストにして、好きなように書くことができます。あまりにも多くのオプションがあります。あなたが既に持っているものを実際に指定していないので... – BeyelerStudios
2番目の問題については、基本的に3つの方法しかありません(https://en.wikipedia.org/wiki)。/Tree_traversal)。一つを選ぶ。そして、 "表示"の代わりに、ツリーをディスクに書き出します。ファイルを読むときは逆にしてください。 –