# hufman **Repository Path**: cuihongxi/hufman ## Basic Information - **Project Name**: hufman - **Description**: 哈夫曼编码,压缩文件, 使用VC++ 6.0测试 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-23 - **Last Updated**: 2025-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hufman #### 介绍 哈夫曼编码,压缩文件 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 /** * 2020年2月4日16:33:43 * 霍夫曼算法压缩及解压缩程序 * 备注: 程序使用了动态内存分配和单链表的数据结构,需要相应的文件 * 压缩步骤: * ① 创建一个哈夫曼映射表变量: mapTabStr* map; * 注:该变量保存了映射关系,哈夫曼树地址,被压缩文件大小。哈夫曼树在压缩之后和解压时没有被调用,但仍然被保留, * 如果不保留可以调用 Free_HufmanTree(powStr* hufmanTree);释放空间 * ② 调用压缩文件函数: mapTabStr* HufmanCompressFile(u8* file,u32 length,u8* hufmanfile); * 注:对file文件进行压缩,压缩之后的编码保存在 hufmanfile 中。同时返回映射表变量用map接收。 * 例子:map = HufmanCompressFile("111111222233344556",19,hufmanfile); * 解压步骤: * ① 调用解压缩函数: void HufmanUncompressFile(u8* hufmanfile,mapTabStr* map,u8* datbuf); * 注:使用相应的哈夫曼映射表map ,解压压缩文件hufmanfile,解压缩之后的数据保存到datbuf中 * 例子:HufmanUncompressFile(hufmanfile,map,encodefile); * 思路流程: * * 压缩步骤: * ① 创建一个全局变量数组 u32 array[256] = {0},该数组保存要压缩文件的权重。 * ② 反复调用 SortData(u32* array, u8* file,u32 length) 将文件file读完。最终array保存了要压缩文件的各个字节权重。 * ③ 调用 powStr* BulidHufmanTree(u32* array) 创建一颗哈夫曼树,返回这棵树的权重节点指针 * ④ 解析树,创建映射表 : * 建数组 mapTabStr map; 调用_TabHufmanCreat(hufmanTree,map)宏进行解析。该宏隐匿了一个全局变量tabhufmanstaticbuff * */ #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)