首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >霍夫曼密码。解压阶段。如何从将是8位数组的list<int>中的文件.bin中提取字节数组(或逐字节)

霍夫曼密码。解压阶段。如何从将是8位数组的list<int>中的文件.bin中提取字节数组(或逐字节)
EN

Stack Overflow用户
提问于 2019-12-22 23:07:58
回答 1查看 171关注 0票数 0

我正在尝试实现.txt文件的哈夫曼压缩和解压缩。压缩效果很好:简而言之,我构建了二叉树,其中符号是叶子,用0和1的List<int>对每个符号进行编码,为整个文本形成一个由0和1组成的长字符串(通过Join方法),并将每个8位字(包含8个二进制数字,就像Char一样)写入文件。哇,文件变小了!

现在到了下一个阶段-解压-我需要使用BinaryReader从文件中逐字节读取,例如,再次将其转换为List<int>String,但不转换为intchar,它们分别占用4个或1个字节。

附言:这是我的假设。也许还有更好的主意呢?我想知道如何处理这个问题。

EN

回答 1

Stack Overflow用户

发布于 2019-12-22 23:36:03

那么,您已经创建了一个二叉树,其中的叶子对应于所有不同的字符,对吧?这就是解压/解码二进制文件所需的全部信息。

Geeksforgeeks有一个很好的解释

  1. 我们从根开始并执行后续操作,直到找到叶为止。
  2. 如果当前位是0,我们将移动到树的左侧节点。
  3. 如果位是1,我们将移动到树的右侧节点。
  4. 如果在遍历过程中遇到叶节点,我们将打印该特定叶节点的字符,然后再次从步骤1开始继续迭代编码数据

<代码>G212

当树中的左侧或右侧都没有子节点时,您就知道有一个叶节点

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59445405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档