ZLIB库使用心得与疑惑
来源:互联网 发布:江西财经大学就业知乎 编辑:程序博客网 时间:2024/05/09 01:02
由于项目需要,所以接触并使用了ZLIB库。ZLIB是通用压缩库,著名的ZIP软件使用的就是ZLIB库。在JAVA中,内置了ZLIB,所以可以直接调用,在网络中流淌的很多压缩后的数据流,就是使用ZLIB处理的。关于ZLIB中使用的LZ77和HUFFMAN编码,这里不作介绍。现在只想说下ZLIB的应用。
在C编写的ZLIB库中,也就是直接从http://www.zlib.net/载下来的库里,有很多参数可以设置,这样可以很灵活的压缩原始数据。例如,MAX_MEM_LEVEL 用来设置压缩级别,即压缩时使用的空间和最终的压缩率之间的一个参数;MAX_WBITS LZ77窗口长度,越长,压缩率就越好,同时,压缩需要空间越大。这些参数在C的ZLIB库里有,然而在JAVA的SPI里就没有,所以说JAVA中的ZLIB使用起来不灵活。
1,使用C下ZLIB库压缩,JAVA下ZLIB解压。
由于是在嵌入式环境下压缩数据,对空间大小要求很高,在将MAX_MEM_LEVEL = 1,MAX_WBITS = 8后,ZLIB使用了8896Bytes的动态内存空间。
而在JAVA端,只需要选择默认参数即可进行解压。
2,JAVA端ZLIB压缩,C下解压
由于JAVA的ZLIB调用,只有少的可怜的参数,无法设定起压缩级别,也就是说,解压端也必须按照默认方式去解压,那将意味着32768 + 11520 Bytes的动态内存申请。这在嵌入式下的应用是不可接受的事情。
遇到的问题:解压缩时可以通过设置MAX_WBITS 而达到设置需要动态申请内存大小的目的。将MAX_WBITS设为9(压缩端为8,解压段至少要比压缩段大),程序只是申请了9520Bytes的内存,用来存放inflate需要的基本数据结构。而库说明中提到的
inflate memory usage (bytes) = (1 << windowBits) + 1440*2*sizeof(int)
完全没有出现。这是一个悬而未绝的问题。只能先放着了。
- ZLIB库使用心得与疑惑
- 开源zlib库使用心得
- 开源zlib库使用心得
- 心得 ~ 使用 zlib库 解压缩 zip文件
- QT疑惑与心得。。
- zlib库 安装与使用
- Zlib库的安装与使用
- Zlib库的安装与使用
- zlib的安装与使用
- zlib的安装与使用
- zlib的安装与使用
- zlib使用与性能测试
- zlib的安装与使用
- zlib的安装与使用
- zlib使用库介绍
- Zlib库使用教程
- 开源zlib库使用
- zlib 库的使用
- red5支持的编码方式
- 简便实现Oracle数据库文件移动方法
- Removable User Identity Module (RUIM)
- 配置tomcat访问日志【转】
- JSP EL表达式详解(~~转载)
- ZLIB库使用心得与疑惑
- 文本处理工具
- “QQ”品牌为啥不做更多民品吗?
- ANT不完全总结
- J2SE,J2EE,J2ME区别
- IE对SVG支持不好
- bit与byte的区别(总结分享)
- SIM API
- 今天又学习了,关于windows和Linux双系统删除Linux遇到的问题。