Huffman Copression で最後のバイトを処理する最善の方法は何か疑問に思っています。テキストファイルを非常にうまく圧縮できるC++の素敵なコードがありますが、現在、最後のバイトを処理する方法がわからないため、コード化された文字の数もコード化されたファイルに書き込む必要があります(入力ファイルのサイズに等しい)。より良い。
たとえば、圧縮する最後の文字は 'a' で、このコードは 011 で、新しいバイトの書き込みを開始したところなので、最後のバイトは次のようになります: 011 + ゴミの 5 ビット、たとえば終わり。そして、このコード化されたファイルをエンコードしているときに、コード 00000 (またはゼロが少ない) が一部の char のコードである可能性があるため、エンコードされたファイルの最後にゴミの char が含まれます。
最初の段落で書いたように、入力ファイルの文字数をコード化されたファイルに保存することでこれを回避しています。エンコード中に、コード化されたファイルを読み取ってその数に到達します(EndOfFileではなく、それらの例に到達しないようにします5 つのゼロ)。コード化されたファイルのサイズが長いほど大きくなり、あまり効率的ではありません。
どうすればこれをより良い方法で処理できますか?