一:
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适合压缩重复长度短,但指回距离较长的数据;使得解压缩过程更加简单,解压缩速度更快,且不需要额外的内存。
三:
第一步,实现代码基本调试,输出结果如下图所示:
调试成功:
会明显的看到数据压缩及解压缩后的数据位,而且压缩效率极高约为221:1,解压后仍能恢复原本的数据位,是为无损压缩。
第二步,实现界面。
首先,选择了MFC的界面实现功能,编辑界面,然后在各个按钮中添加相应的代码,主要实现:
(1)、点击选择文件按钮,调出Windows界面任意选择txt文件,选择成功后在示例框显示文件地址
(2)、点击压缩或解压按钮实现lzo代码的调用及对选取文件的压缩或者解压处理。单无损、线性安全,压缩快速且仅需64KB的内存,必要时允许在压缩部分损失压缩速度换取压缩率。