我正在使用 C 语言进行 Huffman 编码/解码项目,并且对算法应该如何存储有关 Huffman 树的信息、在解码期间重新构建树以及使用可变长度代码解压缩到原始输入文件有很好的理解.
当写入我的压缩文件时,我将输出一个包含唯一频率的 256 个 4 字节整数的表,我知道我还必须找出一种处理 EOF 的方法——稍后再担心。
我的问题是我应该如何完成必要的按位操作,将可变长度代码流写入 fwrite 的一系列 1 字节迭代。
如果我创建了以下(虚构的)代码:
a: 001010101010011
b: 100
c: 11111
d: 0
“abcd”的比特流是:
001010101010011100111110
我知道我需要使用一些按位操作将这个流“切”成可写字节:
00101010|10100111|00111110
根据代码长度创建 8 个不同案例的第一次尝试效果不佳,我被难住了。写入文件时是否有更简单的方法来处理可变长度代码?
谢谢