我要做一个二进制文件的数据压缩,采用Huffman算法。首先要统计文件中每个值的出现频率,而文件中每3个值是2个字节表示,也就是说,每个值是12位,请问各位我该怎么进行频率统计呢?
统计完了以后,对每个值采用Huffman树进行重新编码,编码后每个值的长度不一,可能不足一个字节,也有可能很多字节,那我该怎样写入文件啊?这些值长度不一,我不知道具体该怎么办。最好能给出简单的示例代码,大家救救我吧……

解决方案 »

  1.   

    http://www.codeproject.com/KB/files/huffman.aspx
      

  2.   

    先说统计吧
    用一个字做存储单位
    先初始化成0
    然后将你的值得数据填充到它的后12位
    之后正常应用Huffman算法就行了
    编码后的值设置一个结构
    struct codeValue
    {
        int  nBytes;//记录这个值占了多少字节
         int  nBlank;//记录这条记录末尾空余多少位
        BYTE* pValue;//数据指针
    };
    这样通过codeValue就可以进行读写操作了
      

  3.   

    网站是英文的啊?英文不好啊,汗……
    codeValue是什么啊?我是菜鸟啊。
    大家再帮帮我看看有什么好办法啊……
      

  4.   

    codeValue是个自定义结构
    你也可以起别的名
    如果你连这个懂看不懂
    我觉得你不能做出这个东西啊
    你这是工作?
    让你们老板换个人吧
      

  5.   

    晕,我没注意到。你说用codeValue写文件,具体怎么写啊,能再说说嘛?我是做课程设计。
      

  6.   

    bang ni ding yi xia!
      

  7.   


    对于一条记录先读出nBytes和nBlank然后根据nBytes读出pValue数组再根据nBlank整理pValue的内容
    以此类推读出其他记录