`
withoutme_hw
  • 浏览: 9674 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

使用huffman编码压缩文件,其中对文件进行编码存储、并读取的方法

 
阅读更多

//后注:这里的解码显然弱爆了,明显应该使用Huffman Tree来进行,而不是这里的hard code,因为一般情况,不可能只有a、b、c三个字符的编码。

 

回答百度知道上的一位朋友的问题,

他已经实现了huffman的编码过程但是不知道如何用编码方式对文件进行压缩

下面给出简单的代码。

对范例文件test.dat的压缩比例为:126byte/27byte

 

test.dat的内容

aaabbcaaabbcbaaaabbcaaabbcbaaaabbcaaabbcbaaaabbcaaabbcbaaaabbcaaabbcbaaaabbcaaabbcbaaaabbcaaabbcbaaaabbcaaabbcbaaaabbcaaabbcba

 

 

ps:

给出的代码只能对转换成二进制后,二进制位为7的倍数的文件进行压缩,如果需要弥补这个问题,需要在编码后的文件头中写入源文件的大小,本程序为简便起见,未作处理

分享到:
评论

相关推荐

    Huffman编码对文本文件进行压缩和解压

    通过以上描述,我们可以了解到Java实现Huffman编码压缩和解压文本文件的基本流程和原理。在实际项目中,这种技术可以帮助我们有效地减小文件存储空间,提高数据传输效率。通过提供的测试文件、Java源代码和测试结果...

    用Huffman编码实现文件压缩(含代码)

    4. 文件解压:读取压缩文件,根据Huffman编码对每个符号进行解码,并将解码后的符号写入解压文件中。最后,检查解压文件是否完整,即对比压缩前文件的长度。 5. 实验环境:实验环境是Windows XP,使用VC++ 6.0...

    c语言实现文件压缩 huffman编码实现

    在实际应用中,C语言实现的Huffman编码压缩可能不如商业压缩软件如WinRAR或7-Zip高效,但作为一个学习项目,它可以加深对数据压缩原理和C语言编程的理解。同时,通过扩展注册表功能,可以提升用户体验,让压缩和解压...

    C++实现huffman编码压缩文件,适用于任何格式的压缩

    在C++中实现Huffman编码压缩文件,主要涉及以下几个关键知识点: 1. **Huffman树**:Huffman树(也称为最优二叉树或最小带权路径长度树)是构建Huffman编码的基础。它是一个带权重的二叉树,其中每个叶子节点代表一...

    huffman编码实现压缩与解压文件

    6. **解压缩**:解压缩时,首先读取并重建Huffman编码表。然后,按照编码后的文件中的二进制流,使用编码表解码回原始字符。 7. **文件写入**:将解码后的字符写入新文件,完成解压缩过程。 在Java中,可以使用`...

    Huffman 编码压缩算法

    Huffman编码是一种基于字符出现频率的无损数据压缩算法,由David A. Huffman在1952年提出。它的核心思想是通过构建一棵特殊的二叉树(Huffman树)来为每个字符分配唯一的二进制编码,使得频繁出现的字符具有较短的...

    利用HUFFMAN编码的压缩与解压

    这些算法通常包含一个前端模型来处理原始数据,然后使用Huffman编码进行量化数据的进一步压缩。 **三、Huffman算法原理** Huffman算法的基本思想是构建一棵特殊的二叉树——Huffman树。这个过程包括以下步骤: 1. ...

    使用Huffman对文件进行压缩和解压缩

    总的来说,Huffman编码是一种基础的数据压缩技术,虽然在现代的压缩算法如DEFLATE(用于ZIP和GZIP)中已被更复杂的方法取代,但它仍然是理解和学习数据压缩原理的重要起点。在Java中实现这一算法可以加深对文件操作...

    huffman进行编码,解码根据Huffman算法编写一个对文件进行压缩和解压缩的程序。该程序可以对所有的文件类型进行压缩,压缩之后的文件后缀名为huff。

    在这个过程中,程序需要知道哈夫曼树的结构,通常可以将编码表存储在压缩文件的头部,解压缩时先读取编码表,然后按照编码表进行解码。 对于给定的压缩包文件"PHuffman",它可能是实现了哈夫曼编码的压缩文件。这个...

    Huffman编码算法压缩文本文件

    4. **编码文件**:使用生成的编码表,将文本文件中的每个字符替换为其对应的Huffman编码,形成压缩文件。这一步通常需要将编码后的二进制序列转换成字节流以便写入文件。 5. **解压缩文件**:解压缩时,读取压缩...

    基于Huffman编码压缩软件(java实现)

    而`Compress.java`则可能包含了使用Huffman编码进行实际压缩的逻辑,它将输入文件的字符替换为对应的Huffman编码,并生成压缩后的二进制输出。 `GetReady.java`可能是负责初始化或准备压缩工作的类,例如设置输入...

    Huffman编码(MFC版本)

    8. **性能优化**:虽然Huffman编码是一种高效的压缩方法,但实际应用中,还可以通过优化算法或使用多线程来进一步提高压缩和解压缩的速度。 通过以上这些知识点,我们可以设计并实现一个基于MFC的Huffman编码器和...

    Huffman编码实现的文件压缩器

    在这个名为"Huffman编码实现的文件压缩器"的项目中,开发者创建了一个程序,该程序利用Huffman编码原理对文件进行压缩。程序的核心部分是构建Huffman树的过程,包括以下步骤: 1. **统计频率**:首先,程序需要读取...

    文本文件压缩【huffman编码实现】

    本项目通过Huffman编码实现了对文本文件的压缩和解压缩功能,并提供了实验报告,以深入理解其原理和应用。 Huffman编码的基础是构建一棵特殊的二叉树,即Huffman树。这棵树的特点是每个叶子节点代表一个字符,出现...

    基于Huffman树的文件压缩C源码

    解压缩是压缩的逆过程,需要读取已压缩的文件,还原Huffman编码为原始字符。具体步骤如下: 1. 读取Huffman编码表。 2. 遍历压缩文件,根据编码表解码每个编码为对应的字符。 3. 将解码后的字符写入输出文件。 ...

    数据结构课程设计-基于Huffman编码的文件压缩与解压缩20分-内容与要求.docx

    在数据结构课程设计中,使用Huffman编码进行文件的压缩和解压缩是一种常见的实践项目。Huffman编码是一种高效的数据编码方法,尤其适用于文本压缩,它通过创建一棵特殊的二叉树(Huffman树)来表示字符及其频率,...

    【Huffman编码】实现对任意格式文件压缩 C++

    总之,Huffman编码在C++中的实现是一个结合数据结构、算法和文件操作的综合性编程实践,它可以帮助我们理解数据压缩的基本原理,并提供了一个将理论应用于实际问题的机会。通过这个项目,不仅可以提升编程技能,还能...

    对文本文档进行Huffman编码的小代码C++ VS2013

    另一个文件`Huffman`可能是一个源代码文件,实现了上述步骤,你可以参考并学习其中的实现方法。 总的来说,Huffman编码是一种基于字符频率的无损数据压缩技术,它通过构建最优二叉树实现对数据的有效编码,是计算机...

    Huffman编码的java实现

    7. **快速排序**:虽然Huffman编码本身并不涉及快速排序,但在这个实现中可能用到了快速排序来对字符频率进行排序,因为这是构建最小堆的一种有效方法。快速排序是一种高效的排序算法,平均时间复杂度为O(n log n)。...

Global site tag (gtag.js) - Google Analytics