我正在用 C++ 编写一个霍夫曼编码程序,并使用这个网站作为参考:
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 写入构成 char 的字节(这是一个无符号字符,顺便说一句)。有关如何执行此操作的任何建议?注释的行给出了从 unsigned char* 到 const char* 的无效转换错误。
提前致谢!
编辑:澄清一下:例如,我希望我的最终文本文件是二进制文件——只有 1 和 0。如果您查看我提供的链接的标题,他们会给出“ABRACADABRA!”的示例。以及由此产生的压缩。我想取字符(例如上面的示例中的'A'),使用它的无符号整数(A='65'),并以二进制形式写入 65,作为一个字节。