在内存中压缩及解压缩


    在内存中压缩及解压缩

    //引入头文件#import <zlib.h>
    //引入libz动态库
    NSString *str = @"zlib compress and uncompress test\[email protected]\n2012-11-05\n";
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    Bytef *text = (Bytef*)[data bytes];

    uLong tlen = [data length];
    char* buf = NULL;
    uLong blen;

    /* 计算缓冲区大小,并为其分配内存 */
    blen = compressBound(tlen); /* 压缩后的长度是不会超过blen的 */
    if((buf = (char*)malloc(sizeof(char) * blen)) == NULL)
    {
        printf("no enough memory!\n");
        return -1;
    }

    /* 压缩 */
    if(compress((Bytef*)buf, &blen, (Bytef*)text, tlen) != Z_OK)
    {
        printf("compress failed!\n");
        return -1;
    }

    /* 解压缩 */
    if(uncompress((Bytef*)text, &tlen, (Bytef*)buf, blen) != Z_OK)
    {
        printf("uncompress failed!\n");
        return -1;
    }

    /* 打印结果,并释放内存 */
    printf("%s", text);
    if(buf != NULL)
    {
        free(buf);
        buf = NULL;
    }  
时间: 2024-10-14 00:53:34

在内存中压缩及解压缩的相关文章

linux中压缩与解压缩命令小结

linux中压缩与解压操作非常常见,其命令参数也非常的多,这里只介绍最经常用的带打包文件的几种压缩和解压方式和几个最常用的参数. 现在最常用的压缩和解压工具是gzip和bzip2,这两种工具不能相互解压对方压缩的文件.在linux中其实没有后缀名这一说法,但是为了方便用户解压文件时方便,所以在压缩的时候往往使用不同的后缀名以区分是使用的那个工具,一般使用gzip压缩的文件后缀名是.gz,用bzip2压缩的文件取名为.bz2,而打包文件一般使用tar工具,所以压缩后再打包的文件后缀名一般是.tar

JAVA中压缩与解压缩

以压缩Zip文件为例.主要是通过ZipOutputStream类实现. import java.io.*; import java.util.*; import java.text.*; import java.util.zip.*; //压缩一个文件 //压缩一个文件夹 public class Hello { public static void main(String[] args)throws Exception { final int BUFFER_LENGTH = 1024*1024

【转】libjpeg实现内存位图的压缩及解压缩-显示格式有问题

相信使用过的朋友应该会喜欢上libjpeg,它简单易用.压缩质量可以随意控制.并且稳定性很好,但是,官方网站给提供的libjpeg库, 不论是进行压缩时还是解压缩时,都需要用到FILE,使得我们如果想在内存中直接压缩或解压缩图像还要自己实现相应的结构, 总之,比较麻烦,尤其对初学者,更是不知从何处入手,幸运的是,libjpeg给我们提供了源代码,今天我就为大家介绍,怎样修改源代码, 使libjpeg可以非常容易的直接处理内存中的图像,而无需借助文件操作. 一.建立自己的libjpeg工程    

Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序

前言 最近基于huffman编码和最小堆排序算法实现了一个压缩.解压缩的小程序.其源代码已经上传到github上面: Jcompress下载地址 .在本人的github上面有一个叫Utility的repository,该分类下面有一个名为Jcompress的目录便是本文所述的压缩.解压缩小程序的源代码.后续会在Utility下面增加其他一些实用的小程序,比如基于socket的文件断点下载小程序等等.如果你读了此文觉得还不错,不防给笔者的github点个star, 哈哈.在正式介绍Jcompres

Huffman的应用之文件压缩与解压缩

文件压缩与解压缩> 最近这段时间一直在学习树的这种数据结构,也接触到了Huffman树以及了解了什仫是Huffman编码,而我们常用的zip压缩也是利用的Huffman编码的特性,那仫是不是可以自己实现一个文件压缩呢?当然可以了.在文件压缩中我实现了Huffman树和建堆Heap的代码,zip压缩的介绍> http://www.cricode.com/3481.html 下面开始介绍自己实现的文件压缩的思路和问题... 1).统计>读取一个文件统计这个文件中字符出现的次数. 2).建树&

linux下压缩、解压缩、归档详解

Linux下常用压缩工具有zip.bzip2.gzip.xz.tar 解压缩工具有unzip.bunzip2.gunzip.unxz bzip2.gzip.xz 以上三个命令不能对目录压缩,只能对目录下各文件压缩 压缩命令: zip 命令: 是一个应用广泛的跨平台的压缩工具,压缩文件的后缀为zip文件 语法: zip[参数][文件] 列举参数: -A 自动解压文件 -c 给压缩文件加注释 -d 删除文件 -F 修复损坏文件 -k 兼容 DOS -m 压缩完毕后,删除园文件 -q 运行时不显示信息

利用JAVA API函数实现数据的压缩与解压缩

综述 许多信息资料都或多或少的包含一些多余的数据.通常会导致在客户端与服务器之间,应用程序与计算机之间极大的数据传输量.最常见的解决数据存储和信息传送的方法是安装额外的存储设备和扩展现有的通讯能力.这样做是可以的,但无疑会增加组织的运作成本.一种有效的解决数据存储与信息传输的方法是通过更有效率的代码来存储数据.这篇文章简要的介绍了数据的压缩与解压缩,并展示了用java.util.zip包来实现数据的压缩与解压缩是多么的方便与高效. 当然用诸如WinZip,gzip,和Java压缩(或jar)之类

Linux系统压缩及解压缩

==============================================================================  Linux系统解压缩 ============================================================================== 概述: 本篇将介绍Linux系统中的压缩和解压缩的工具,以及归档工具(tar,cpio) compress/uncompress:对应 .Z 结尾的压缩格式文件

iOS之在内存中绘图

与直接在UIView控件上绘图不同,在内存中绘图时,需要开发者自己准备绘图环境,Quartz 2D提供了一个非常便捷的函数:UIGraphicsBeginImageContext(CGSize size),该函数用于准备绘图环境.当图形绘制完成后,可调用UIGraphicsEndImageContext()函数结束绘图和关闭绘图环境. 总结来说,在内存中绘图的步骤如下. 调用UIGraphicsBeginImageContext(CGSize size)函数准备绘图环境. 调用UIGraphic