iOS 对字符串压缩
来源:互联网 发布:cydia怎么删除软件 编辑:程序博客网 时间:2024/05/19 01:09
一般都是对文件进行压缩的,这里的代码是对字符串进行压缩和解压缩
压缩字符串
- (NSData *)gzipDeflate:(NSString*)str{ NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding]; if ([data length] == 0) return data; z_stream strm; strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; strm.total_out = 0; strm.next_in=(Bytef *)[data bytes]; strm.avail_in = [data length]; // Compresssion Levels: // Z_NO_COMPRESSION // Z_BEST_SPEED // Z_BEST_COMPRESSION // Z_DEFAULT_COMPRESSION if (deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, (15+16), 8, Z_DEFAULT_STRATEGY) != Z_OK) return nil; NSMutableData *compressed = [NSMutableData dataWithLength:16384]; // 16K chunks for expansion do { if (strm.total_out >= [compressed length]) [compressed increaseLengthBy: 16384]; strm.next_out = [compressed mutableBytes] + strm.total_out; strm.avail_out = [compressed length] - strm.total_out; deflate(&strm, Z_FINISH); } while (strm.avail_out == 0); deflateEnd(&strm); [compressed setLength: strm.total_out]; return [NSData dataWithData:compressed];}
解压缩
- (NSData *)gzipInflate:(NSData*)data{ if ([data length] == 0) return data; unsigned full_length = [data length]; unsigned half_length = [data length] / 2; NSMutableData *decompressed = [NSMutableData dataWithLength: full_length + half_length]; BOOL done = NO; int status; z_stream strm; strm.next_in = (Bytef *)[data bytes]; strm.avail_in = [data length]; strm.total_out = 0; strm.zalloc = Z_NULL; strm.zfree = Z_NULL; if (inflateInit2(&strm, (15+32)) != Z_OK) return nil; while (!done) { // Make sure we have enough room and reset the lengths. if (strm.total_out >= [decompressed length]) [decompressed increaseLengthBy: half_length]; strm.next_out = [decompressed mutableBytes] + strm.total_out; strm.avail_out = [decompressed length] - strm.total_out; // Inflate another chunk. status = inflate (&strm, Z_SYNC_FLUSH); if (status == Z_STREAM_END) done = YES; else if (status != Z_OK) break; } if (inflateEnd (&strm) != Z_OK) return nil; // Set real length. if (done) { [decompressed setLength: strm.total_out]; return [NSData dataWithData: decompressed]; } else return nil;}
0 0
- iOS 对字符串压缩
- iOS对图片压缩
- ios gzip 压缩字符串
- Java对字符串进行压缩
- iOS 对图片进行压缩
- iOS 对图片进行压缩
- ios 对图片进行压缩
- PHP 对字符串进行压缩和解压
- C# 对字符串的压缩和解压
- C# GZip对字符串压缩和解压
- C# GZip对字符串压缩和解压
- GZip对字符串压缩和解压
- Java对字符串的压缩与解压
- JAVA对字符串进行压缩编码
- JAVA对字符串的压缩与解压缩
- Java对字符串的压缩与解压缩
- C# GZip对字符串压缩和解压
- 对字符串,字节数组进行GZIP压缩和解压缩
- String字符串面试
- cocos2d-js
- Demo1Meterial Design入门:导航栏(使用ToolBar)
- 重读java编程思想之向上转型一
- 自定义点击状态栏返回
- iOS 对字符串压缩
- NYOJ 767 因子和
- Android微信支付
- 《VR入门系列教程》之22---GearVR SDK代码剖析
- [疯狂Java]NIO:使用Channel、Charset(字符集)、使用Charset传递CharBuffer
- Dual Palindromes
- [从头学声学] 第208节 汉语的拼音
- 使用exe4j制作java启动程序等候界面
- 【OpenMP】互斥