Advertisement

Gzip代码分析(四)

阅读量:

哈弗曼编码

首先说明一下涉及到的数据结构:

复制代码
 typedef struct ct_data {

    
     union {
    
     ush  freq;       /* frequency count */
    
     ush  code;       /* bit string */
    
     } fc;
    
     union {
    
     ush  dad;        /* father node in Huffman tree */
    
     ush  len;        /* length of bit string */
    
     } dl;
    
 } ct_data;

这个联合体嵌套在结构体中。该压缩算法使用ct_data类型定义了五棵树:动态分配的一棵树集合dyn_ltree[], 动态分配的一棵树集合dyn_dtree[], 静态分配的一棵树集合static_ltree[], 静态分配的一棵树集合static_dtree[], 以及用于平衡树处理的一棵树集合bl_tree[]. 每个数组中的索引代表待编码节点的值, 其中freq字段记录了该节点出现的频率。

哈弗曼编码的输入

在gzip过程中,在这一层级上来说

dyn_dtree

全部评论 (0)

还没有任何评论哟~