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)
还没有任何评论哟~
