LZO基本介绍与调试总结
来源:互联网 发布:linux命令补全快捷键 编辑:程序博客网 时间:2024/05/16 18:07
一、LZO介绍
LZO是一个用 ANSI C语言编写的无损压缩库。他能够提供非常快速的压缩和解压功能。解压并不需要内存的支持。即使使用非常大的压缩比例进行缓慢压缩出的数据,依然能够非常快速的解压。LZO遵循GNU的GPL使用许可。
LZO非常适合进行数据的实时压缩解压处理,这就是说他更关心操作速度,而不是压缩比例。
LZO使用 ANSI C语言编写,并且压缩后的数据也被设计为可以跨平台使用的格式。
LZO拥有如下的特点:
解压速度很快,并且很简单;
解压时不需要内存支持;
压缩的速度还不错;
压缩时只需要 64 KiB的内存支持;
压缩比例可以根据需要调节,而这并不影响解压的效率,提高压缩比例自然会降低压缩速度;
压缩包含了很多的压缩级别,提供很多选择;
提供只需要 8 KiB内存支持的压缩级别;
提供线程安全;
提供无损压缩;
参考资料:http://www.oberhumer.com/opensource/lzo/lzofaq.php
http://blog.csdn.net/romainxie/article/details/8228231(译)
二、代码
从网址https://www.oberhumer.com/opensource/lzo/下载LZO源代码,解压缩后的文件:lzo-2.10,包含以下文件夹:
通过说明性文件,可以得知:
文件夹B:包含了 DOS、windows等系统的支持文件
文件夹examples:包含了示例程序代码
文件夹include:包含了公共头文件
文件夹minilzo:包含了LZO算法一种简化版
文件夹src:包含了LZO源码
文件夹util:包含了一些涉及到的脚本
三、编解码器的编写
1、新建工程LZO
2、这里采用的代码原型是simple.c文件,之后添加example文件夹以及src文件夹以及include文件夹中的相关文件(具体方法是在运行之后根据debug内容添加相关文件)
注:在修改中出现并克服了以下问题
(1)之前一直显示找不到.h文件,因为是新建了工程,所以引入的.h文件不能再使用<>,而应该使用””。
(2)如果.c文件引入的.h文件和其在一个文件里,使用#include”xxx.h” ,如果.h文件在和.c文件同一层的文件夹里,使用#include”xxx/xxx.h”,如果.h文件和.c文件所在的文件夹是并列的,使用#include”../xxx.h”
3、代码内容
(1)定义变量
(2)lzo库初始化
(3)读取输入输出文件,这里使用文件指针,使用buffer存放读入数据
(4)这里需要得到输入文件的大小,这里采用fseek()以及ftell()函数。
其中,fseek()函数的用法如下:
fseek(fp,10,0);//就是把指针指向fp文件开头10字节处
fseek(fp,10,1);//就是把指针指向fp文件离当前位置10字节处
fseek(fp,10,2);//就是把指针指向fp文件结尾前10字节处
ftell()函数的用法如下:
n=ftell(fp);//n即为偏离文件首字符个数
(5)调用lzo1x_1_compress函数进行压缩,并把数据写入输出文件
(6)调用lzo1x_decompress函数进行解压缩
(7)释放缓冲区关闭文件
4、结果
输入文件是个自己写的input.txt
输出文件是压缩后的文件output.txt
运行结果如下:
从中可以看出1198字节的input.txt被压缩成135字节,后又被解压成1198字节,因为存在很多重复字母以及重复排列顺序,所以压缩量是很可观的。
- LZO基本介绍与调试总结
- LZO 使用和介绍
- lzo 安装总结
- vc调试基本总结
- LZO和MiniLZO编码介绍
- hadoop hive的lzo总结
- lzo
- LZO
- lzo 压缩与解压缩库
- LZO 2.06 使用帮助和介绍
- LZO 2.06 使用帮助和介绍
- LZO 2.06 使用帮助和介绍
- UITableView总结:基本使用方法介绍
- 调试问题与总结
- 酥饼机的基本调试程序介绍
- spring MVC 学习笔记与总结1----spring MVC 介绍与基本的.xml文件配置
- 利用zlib,lzo压缩与解压缩字符
- Hadoop LZO的安装与配置
- 数据库
- websoket 的重连和代理
- 四页玫瑰
- 如何修改AndroidStudio默认浏览器
- ~哈希表~
- LZO基本介绍与调试总结
- 图案
- PrintOnPage事件控制页眉页脚显示在哪一页
- 聚合函数查询、连接查询、子查询
- Android studio翻译插件——ECTranslation
- 2017年4月21日 工作日记
- 完数
- shell 从输入的参数里找出最大值,最小值,平均值
- The Door Problem CodeForces