【发布时间】:2022-01-20 08:57:35
【问题描述】:
我使用了我们编写的 Huffman 编码来压缩文件。
该函数采用String,其输出为String。
问题是我想将它保存为二进制文件以获得小于原始大小的大小,但是当我将它(0 和 1)作为字符串取回时,它的大小大于主文件。如何将该字符串(0 和 1)转换为二进制,以便每个字符都保存在 1 位中?我正在使用 Qt 来实现这一点:
string Huffman_encoding(string text)
{
buildHuffmanTree(text);
string encoded = "";
unordered_map<char, string> StringEncoded;
encoding(main_root, "", StringEncoded);
for (char ch : text) {
encoded += StringEncoded[ch];
}
return encoded;
}
【问题讨论】:
-
这能回答你的问题吗? How to read/write arbitrary bits in C/C++
-
这没有足够的代码来帮助你。霍夫曼代码不适合字节(例如,它们可以是 3 位或 5 位)。所以你需要一种比特流,然后将该比特流写入文件。