【发布时间】:2012-06-25 22:46:55
【问题描述】:
我正在尝试在 c++ 中实现霍夫曼编码算法。
我的问题是:在我得到每个字符的等效二进制字符串之后,我怎样才能将这些零和一写成二进制文件而不是字符串 0 或字符串 1?
提前谢谢...
【问题讨论】:
-
只是为了说清楚。我所说的二进制等效字符串是什么意思:例如,如果 A 由 010 编码,我想在文件上写 010 作为二进制 0 和二进制 1,所以总数是 3 位而不是 24 位(3 字节),每个 ASCII 等效字符 0 和字符 1 的二进制。
-
我们不明白的是你有什么,而不是你最终需要什么。
-
我有一个包含 3 个字段的数据结构(用户定义);字符、频率和等效位编码。现在,首先我要从文本文件中读取文本并填充每个字符的频率字段,将数据结构转换为二叉树,然后遍历树以找到每个字符的等效位编码。最后(这是我的问题):我想通过从原始文本中读取每个字符并将其等效位字符串(使用二叉树)写入二进制文件来生成原始文本文件的压缩版本。
-
那么您可以使用我在下面包含的
bitstream类使用push_bit(bool)写入您的编码位,然后通过写入@ 返回的数组的(size() + 7) / 8字节将其写入文件987654324@.
标签: c++ encoding binary huffman-code