私は C++ でハフマン エンコーディング プログラムを作成しており、この Web サイトを参照として使用しています。
http://algs4.cs.princeton.edu/55compression/Huffman.java.html
私は現在、writeTrie メソッドにいます。これが私のバージョンです。
// write bitstring-encoded tree to standard output
void writeTree(struct node *tempnode){
if(isLeaf(*tempnode)){
tempfile << "1";
fprintf(stderr, "writing 1 to file\n");
tempfile << tempnode->ch;
//tempfile.write(&tempnode->ch,1);
return;
}
else{
tempfile << "0";
fprintf(stderr, "writing 0 to file\n");
writeTree(tempnode->left);
writeTree(tempnode->right);
}
}
コメントされた行を見てください。たとえば、テキスト ファイルに書き込んでいるとしましょう。ただし、tempnode->ch で文字を構成するバイトを書きたいとします (これは unsigned char です)。これを行う方法について何か提案はありますか? コメント行では、unsigned char* から const char* への無効な変換エラーが発生します。
前もって感謝します!
編集:明確にするために:たとえば、最終的なテキストファイルをバイナリにしたいと思います-1と0のみ。私が提供したリンクのヘッダーを見ると、「ABRACADABRA!」の例が示されています。そして結果の圧縮。char (上記の「A」の例など) を取得し、unsigned int 番号 (A='65') を使用して、バイナリで 65 をバイトとして書き込みたいと思います。