我实现了规范的霍夫曼算法,在理论部分有几个问题,即关于解码的信息存储。作为一种方法,建议将字母字符及其规范代码的长度与编码数据一起传输,因为要恢复规范表,我们只需要代码长度。
示例:字符串"bbbaacd“。规范代码:b0 (1比特)a 10 (2) c 110 (3) d 111 (3)即解码数据: b1a2c3d3。这引发了几个问题。
1)是否有必要在一个文件中传输该表以及根据该表编码的数据(在文件的结尾/开头)?有什么真实的例子吗?
2)如果是,那么如果数据中有数字,如何了解我们的表中字母符号(数字)在哪里,位数(长度)在哪里?
3)最后,如何理解表和编码数据之间的边界?
如果所有内容都存储在单独的文件中(在我看来,这更简单也更符合逻辑),那么最后两个问题就会自动消失。
发布于 2020-05-13 03:50:43
通常,代码长度存储在与数据相同的文件中。例如,如果您将最大代码长度设置为16位,则文件中的前128个字节可以是所有256个字节的代码长度(每个4位)。
一种稍微复杂一点的方法是对这些长度进行哈夫曼编码。你可以使用一棵固定的树来实现。或者,您可以使用动态树,并首先写出每个长度的符号长度。
https://stackoverflow.com/questions/61759464
复制相似问题