数据压缩
数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。数据压缩包括有损压缩和无损压缩。
肥叔菌
本博客主要用于记录学习过程中的笔记,每隔一段时间,博主将会将精华内容整合发到知乎、简书上。欢迎关注博主肥叔菌在其他平台上的账号,谢谢。
B站:https://space.bilibili.com/456254145
segmentfault:https://segmentfault.com/u/feishujun/articles
简书:https://www.jianshu.com/u/67bab078551a
展开
-
zlib源码分析—DEFLATE算法原理及实现
从上一篇博客zlib源码分析—compress函数学习了compress函数的代码,这一篇我们来详细分析一下deflate算法的流程。先从compress代码中所体现出来的deflate函数的返回值和输入参数看起。通过源数据长度来判别第二个参数是Z_NO_FLUSH还是Z_FINISH(这里我们知道deflate第二个参数可以输入两个中参数Z_NO_FLUSH或Z_FINISH),即如果源数据长度为0,第二个参数为Z_FINISH,否则为Z_NO_FLUSH。deflate返回值为Z_OK为正常状态,返回Z原创 2020-10-28 23:29:14 · 8591 阅读 · 0 评论 -
zlib源码分析—输出Buffer机制
双缓冲概述向pending_buf输入数据向pending_buf中输出单字节数据,pending用于指示pending_buf中数据的数量(以字节为单位)。/* Output a byte on the stream. * IN assertion: there is enough room in pending_buf. */#define put_byte(s, c) {s->pending_buf[s->pending++] = (Bytef)(c);}put_short原创 2020-10-28 21:08:30 · 5569 阅读 · 0 评论 -
zlib源码分析—compress函数
本篇博客的目的是分析compress.c中的函数,主要目的是学习deflate函数的使用。先从compress函数说起,compress函数其实就是以压缩级别Z_DEFAULT_COMPRESSION调用函数compress2。从zlib.h中第190行的宏定义可以看出zlib支持的压缩级别分为Z_NO_COMPRESSION(不压缩模式)、Z_BEST_SPEED(最快速度压缩模式)、Z_BEST_COMPRESSION(最高压缩率压缩模式)、Z_DEFAULT_COMPRESSION(默认压缩模式)。原创 2020-10-24 08:33:18 · 9770 阅读 · 1 评论 -
zlib——compress.c文件分析
下面代码是上一篇博客所讲的zpipe.c,主要用于和compress.c文件进行对比。#include <stdio.h>#include <string.h>#include <assert.h>#include "zlib.h"#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)# include <fcntl.h># include <原创 2020-09-17 23:27:02 · 5968 阅读 · 0 评论 -
zlib——Usage Example翻译
我们经常会遇到有关应如何使用deflate()和inflate()函数的问题。 用户想知道何时应该提供更多的输入,何时应该使用更多的输出,如何处理Z_BUF_ERROR,如何确保进程正确终止,等等。 因此,对于那些读过zlib.h(几次)并且想要进一步启发的人,下面是C中的一个带注释的示例,该示例使用deflate()和inflate()将输入文件压缩和解压缩为输出文件的简单例程。。 注释散布在代码行之间。 因此,请在两行之间阅读。 我们希望这有助于解释zlib的某些复杂之处。事不宜迟,这是程序zpipe.原创 2020-09-16 22:01:04 · 5967 阅读 · 0 评论