• 用C++实现文件压缩(1.5)


    今天主要做的就是,将完成huffman编码的数据以二进制的形式写入文件中。这是个挺苦逼的活。

    不过好在我以前玩过一段时间的单片机,所有能够较好的实现位运算,一位一位的将数据存放到缓冲区中,然后统一写入内存。

    今天这个代码,怎么说呢,应该算是比较细致的活吧,毕竟这已经是接触到了计算机存储中存储单位最小的位了,在代码的控制上要比较小心,写代码前必须把问题想清楚,想不清楚,就很容易悲剧。

    代码实现出来之后,原本大小为7.09kb的文件压缩后大小变成了4.86kb,这还是其中的信息头占了不少的内容,不然效率能更高一些。

    当然了,我现在还不清楚我写进去的文件是否是正确的,毕竟现在还没解压出来,不过头部数据是没问题的,这个已经测试过了。

    现在正在尝试着做解压,解压这块,不是很好处理。

    解码其实很简单,就是根据头部信息,重新构建huffman树,然后把读出来的bit流进行依次的遍历,一旦遍历到叶子节点,就表明完成了解码,将叶子节点中的数据取出来添加到文件中就OK了。

    但是,一位一位的向外读,这代码不是那么好写的……

  • 相关阅读:
    如何理解联合文件系统?
    Docker 学习笔记(一)
    Bzoj 3124: [Sdoi2013]直径 题解
    Bzoj 3131 [Sdoi2013]淘金 题解
    欧拉路(题目)
    硬币问题
    线段树、树状数组
    Splay树、Treap树
    模拟退火
    广搜题目(一本通)
  • 原文地址:https://www.cnblogs.com/matrix-r/p/3351968.html
Copyright © 2020-2023  润新知