ios gzip 解压实现
来源:互联网 发布:花千骨进阶数据大全 编辑:程序博客网 时间:2024/04/28 05:00
1. 加入头文件
#import "zlib.h"
2. 加入库 : libz.1.1.3.dylib 到xcode当中。
3. 加入函数:
-(NSData *)uncompressZippedData:(NSData *)compressedData
{
if ([compressedDatalength] == 0)
return compressedData;
unsigned full_length = [compressedDatalength];
unsigned half_length = [compressedDatalength] / 2;
NSMutableData *decompressed = [NSMutableDatadataWithLength: full_length + half_length];
BOOL done =NO;
int status;
z_stream strm;
strm.next_in = (Bytef *)[compressedDatabytes];
strm.avail_in = [compressedDatalength];
strm.total_out =0;
strm.zalloc =Z_NULL;
strm.zfree =Z_NULL;
if (inflateInit2(&strm, (15+32)) != Z_OK)
returnnil;
while (!done)
{
// Make sure we have enough room and reset the lengths.
if (strm.total_out >= [decompressedlength]) {
[decompressed increaseLengthBy: half_length];
}
// chadeltu 加了(Bytef *)
strm.next_out = (Bytef *)[decompressedmutableBytes] + strm.total_out;
strm.avail_out = [decompressedlength] - strm.total_out;
// Inflate another chunk.
status = inflate (&strm,Z_SYNC_FLUSH);
if (status ==Z_STREAM_END) {
done = YES;
} elseif (status != Z_OK) {
break;
}
}
if (inflateEnd (&strm) !=Z_OK)
returnnil;
// Set real length.
if (done) {
[decompressed setLength: strm.total_out];
return [NSDatadataWithData: decompressed];
} else {
returnnil;
}
}
- ios gzip 解压实现
- IOS解压GZIP
- iOS gzip解压
- iOS GZIP 字符串解压
- iOS中的gzip解压
- iOS客户端的gzip解压
- [其它]iOS中的gzip解压
- iOS客户端的gzip解压
- iOS gzip 压缩和解压
- Java实现Gzip的压缩和解压
- gzip解压
- gzip解压
- gzip解压
- gzip解压
- 使用zlib实现gzip格式数据的压缩和解压
- Java实现文件压缩与解压[zip格式,gzip格式]
- Java实现文件压缩与解压[zip格式,gzip格式]
- 使用zlib实现gzip格式数据的压缩和解压
- 单链表的逆转
- 如何在Kafka中修改Topic的preferred replica
- 欢迎使用CSDN-markdown编辑器
- 判断两个链表是否相交
- 【leetcode】【单链表】【61】Merge k Sorted Lists
- ios gzip 解压实现
- Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V的解决办法
- 第一次省赛
- android中访问res文件夹下面的某一个文件中的文件
- iOS开发——获取UIWebView中视频的长度与播放进度等信息
- 网站部署到IIS7上出现HTTP 错误 500.19(由于权限不足而无法读取配置文件)的问题
- UIGraphicsBeginImageContext
- 正太分布笔记
- 一文读懂机器学习,大数据/自然语言处理/算法全有了……