我正在尝试实现.txt文件的哈夫曼压缩和解压缩。压缩效果很好:简而言之,我构建了二叉树,其中符号是叶子,用0和1的List<int>对每个符号进行编码,为整个文本形成一个由0和1组成的长字符串(通过Join方法),并将每个8位字(包含8个二进制数字,就像Char一样)写入文件。哇,文件变小了!
现在到了下一个阶段-解压-我需要使用BinaryReader从文件中逐字节读取,例如,再次将其转换为List<int>或String,但不转换为int或char,它们分别占用4个或1个字节。
附言:这是我的假设。也许还有更好的主意呢?我想知道如何处理这个问题。
发布于 2019-12-22 23:36:03
那么,您已经创建了一个二叉树,其中的叶子对应于所有不同的字符,对吧?这就是解压/解码二进制文件所需的全部信息。
Geeksforgeeks有一个很好的解释
<代码>G212
当树中的左侧或右侧都没有子节点时,您就知道有一个叶节点。
希望这能有所帮助!
https://stackoverflow.com/questions/59445405
复制相似问题