LZO算法

  一:

1)LZO是致力于解压速度的一种数据压缩算法,LZO 是 Lempel-Ziv-Oberhumer 的缩写。这个算法是无损算法,参考实现程序是线程安全的。 实现它的一个自由软件工具是lzop。现在 LZO 有用于 Perl、Python 以及 Java 的各种版本。

2)LZO 拥有如下的特点:

  • 解压速度很快,并且很简单;
  • 解压时不需要内存支持;
  • 压缩的速度还不错;
  • 压缩时只需要 64 KiB 的内存支持;
  • 压缩比例可以根据需要调节,而这并不影响解压的效率,提高压缩比例自然会降低压缩速度;
  • 压缩包含了很多的压缩级别,提供很多选择;
  • 提供只需要 8 KiB 内存支持的压缩级别;
  • 提供线程安全;
  • 提供无损压缩;

二:

1)LZO压缩算法压缩原理

    LZO压缩算法采用(重复长度L,指回距离D)代替当前已经在历史字符串中出现过的字符串,其中,重复长度是指,后出现的字符串与先出现的字符串中连续相同部分的长度;指回距离是指,先后两个相同字符串之间相隔的距离(每个字节为一个单位);如果没出现过(定义为新字符),则首先输出新字符的个数,再输出新字符。例如,待处理的字符串为“ABCDEFGHABCDEFJKLM”,压缩算法逐个处理字符,处理ABCDEFGH时没发现重复字符;处理到ABCDEF时发现这些字符在历史字符串中已经出现过,计算重复长度为6,指回距离(当前A离历史A的距离)为8,则用(6,8)代替ABCDEF;处理到JKLM时没发现重复字符,字符串到此处理完毕,则整个字符串被压缩成:(08)h ABCDEFGH(6,8)(04)h JKLM,其中h表示16进制。

2) LZO压缩算法编码

    LZO压缩后的数据需要经过特定的格式进行编码,如图所示, LZO压缩算法这样做的目的有两方面:调整LZO压缩率,使得LZO适合压缩重复长度短,但指回距离较长的数据;使得解压缩过程更加简单,解压缩速度更快,且不需要额外的内存。

                                                            

三:

第一步,实现代码基本调试,输出结果如下图所示:

 

调试成功:这里写图片描述 


由于testmini.c中的输入是0,故更改输入为zo_memset(in,1,in_len);运行后显示:这里写图片描述 
会明显的看到数据压缩及解压缩后的数据位,而且压缩效率极高约为221:1,解压后仍能恢复原本的数据位,是为无损压缩。 
第二步,实现界面。 
首先,选择了MFC的界面实现功能,编辑界面,然后在各个按钮中添加相应的代码,主要实现: 
(1)、点击选择文件按钮,调出Windows界面任意选择txt文件,选择成功后在示例框显示文件地址 
(2)、点击压缩或解压按钮实现lzo代码的调用及对选取文件的压缩或者解压处理。单无损、线性安全,压缩快速且仅需64KB的内存,必要时允许在压缩部分损失压缩速度换取压缩率。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值