一、什么是LZO
LZO是致力于解压速度的一种数据压缩算法,LZO 是 Lempel-Ziv-Oberhumer 的缩写。这个算法是无损算法,参考实现程序是线程安全的。实现它的一个自由软件工具是lzop。最初的库是用 ANSI C 编写、并且遵从 GNU通用公共许可证发布的。现在 LZO 有用于 Perl、Python 以及 Java的各种版本。代码版权的所有者是 Markus F. X. J. Oberhumer。
对于游戏开发人员来说LZO有以下优点。
(1)解压缩速度非常快。
(2)不需要额外的内存解压缩。
(3)能设置不同的压缩参数改变压缩率,但设置这些压缩参数不会降低解压速度。
(4)LZO是无损压缩,压缩后的数据能准确还原。
MiniLZO是一个轻量级的压缩/解压缩库,设计MiniLZO的目的是为了某些只需包含一个小型的压缩/解压缩功能,而不想包含LZO全部代码的程序而设计的。编译后的MiniLZO库少于5KB,非常适合内嵌在主程序中。
源码地址:
C: http://www.oberhumer.com/opensource/lzo/
c#:http://lzohelper.codeplex.com/
本次主要调试miniLZO,下载后,解压,在vs中新建一个win32控制台,然后分别把三个头文件和两个源文件加到对应的文件夹,如图:
点击testmini.c
调试成功,是无损压缩
分析部分程序:
/* malloc & free 函数功能类型 */
typedef lzo_voidp (__LZO_CDECL *lzo_alloc_func_t)
(lzo_callback_p self, lzo_uint items, lzo_uint