区分哈夫曼二进制头和编码二进制
Differentiating Binary Header and Encoded Binary In Huffman
我正在创建一个基本的霍夫曼编码/解码工具。我发现这个问题帮助我实现了一个头,以二进制形式存储我生成的霍夫曼树。我也可以使用树来将文本编码/解码为二进制文件。所以程序实际上可以工作,但是我仍然有一个问题。
目前,头文件和编码的二进制文件在单独的文件中,因为我无法找到一种方法将它们放入同一个文件中,使我在解码过程开始时很容易读取头文件。硬编码某些"头结束"字符似乎是一种相当hack的方法,更不用说有可能将终止字符的一些初始位作为头中编码树的一部分读入,从而导致整个树被损坏。
虽然我的程序使用单独的头文件和体文件,但我想合并它们。有什么好主意吗?
您不需要做任何特别的事情来合并您的标题(树)和内容(霍夫曼编码的文本)
如果你查看你在这里发布的问题的答案,并检查解码算法(那里的ReadNode(BitReader reader)
伪码函数),你可以看到算法停止读取树只是因为它读取了所有-而不是因为它达到了EOF字符或类似的东西。
它不需要搜索EOF,因为它只对有子节点(0位)的节点递归地调用自己。一旦算法到达了所有的叶子,就没有更多的递归调用,所以阅读器将被精确地定位在正确的位置,让你开始阅读内容(就在阅读整个标题之后,没有额外的"标题结束"指示。
相关文章:
- 在CRC-16 CCITT中将数据从二进制解码为文本,我应该输入一个码字,使用CRC生成器进行编码
- 为二进制树编码remove()函数
- 如何在C++中将二进制编码十进制转换为 int
- 将二进制编码的无符号字符转换为整数
- 如何在65536字节上编码二进制数据到C 上的WebSocket帧
- 为什么动态链接的二进制显示硬编码为so name
- 在C 中对二进制对象进行编码/解码的标准方法
- C++正在创建二进制搜索树:EXC_BAD_ACCESS错误.算法错误还是编码错误
- 在遗传算法中使用二进制编码是必要的吗
- 网络上的二进制编码
- 无法读取二进制编码的十六进制值
- 如何在算术编码中将双精度转换为其二进制形式?
- Windows NT 二进制可执行文件内部常量字符串编码
- C++ 如何将名称硬编码为二进制
- 平衡二进制树编码
- 如何在C++中表示二进制数(用于霍夫曼编码器)
- 使用字符串类编码二进制数据
- 如果可以用IEEE 754中的二进制格式表示,那么硬编码浮点精确吗
- 一个令人困惑的C++双数二进制编码结果
- 将二进制编码的十进制(BCD)解码为无符号整数