Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        3年前关闭。
                                                                                            
                
        
我正在用C ++实现霍夫曼编码,我可以成功地构建霍夫曼树并可以对字符串进行编码/解码。

我接下来要做的是能够对文件进行编码/解码,但是我有一些问题。
我正在使用布尔向量包含代码字。我的问题是:我只能将字节写入文件。我如何一点一点地写?也许我可以使用一个图书馆?

另一件事是,如果要解码文件,则需要树本身(或代码表)。序列化树的最佳方法是什么?

任何帮助将非常感激。

最佳答案

太糟糕了,C ++ bool矢量的内部格式是不确定的,因为它很有可能已经被打包了。

无论如何,您将使用<<>>&运算符在编码侧将位打包为字节,并在解码侧将位解包。假设您知道一个字节由八位组成,那么这很简单。

至于发送霍夫曼码,请阅读有关规范霍夫曼码的信息。您无需发送代码,只需发送每个符号的代码长度(以位为单位)。为了提高效率,长度序列本身可以使用游程长度和霍夫曼编码进行压缩。有关示例,请参见Deflate format

关于c++ - C++中的霍夫曼编码文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40439526/

10-10 18:21
查看更多