Two Classes for Doing Gzip in Memory

Environment: OS independent

Now, many applications need API to do Gzip in memory. The Zlib form, http://www.gzip.org/zlib, provides Gzip and unGzip function, but they are for files. It's very inconvenient to compress and decompress small data that could be compressed in memory. I ported the Gzip and unGzip functions to two template classes, CA2GZIP and CGZIP2A, to do Gzip in memory; they also allocate and deallocate memory automatically. It works with zlib from http://www.gzip.org/zlib. The following is some code for how to use them.

#include "GZipHelper.h"
  void main()
  {
    char plainText[]="Plain text here";
      CA2GZIP gzip(plainText,strlen(plainText));
                                   // do compressing here;
      LPGZIP pgzip=gzip.pgzip;     // pgzip is zipped data pointer,
                                   // you can use it directly
      int len=gzip.Length;         // Length is length of zipped
                                   // data;

      CGZIP2A plain(pgzip,len);    // do uncompressing here

      char *pplain=plain.psz;      // psz is plain data pointer
      int  aLen=plain.Length;      // Length is length of unzipped
                                   // data.
  }

Downloads

Download demo project - 131 Kb


Comments

  • Decompress multiple buffers

    Posted by Legacy on 12/19/2003 12:00am

    Originally posted by: Makrem

    I ask if it is possible to modify the code of compress/decompress gzip in memory to accept multiple bufers composing a big file.

    What I want excatly is to decompress a gzip file buffer by buffer using ZLIB in memory routines.

    Reply
  • Wrong When Decompress the large file-data

    Posted by Legacy on 11/03/2003 12:00am

    Originally posted by: suxioajun

    I compressed one bitmap with this,but when I compressed with this,I found some data to be lost....faint!

    Reply
  • Best Compression and new code

    Posted by Legacy on 07/15/2003 12:00am

    Originally posted by: Philippe Boucher

    Hi

    The new code provide on the web page you link is working correctly for huge data. I found that speed of compression is a LOT increased by using this setting (with best compression) :
    CA2GZIPT<65536, Z_BEST_COMPRESSION, Z_DEFAULT_STRATEGY> gzip( (char*)debut, ramFile.GetLength() );

    The 65536 seems to helps

    Reply
  • New bug-fixed package: http://www.geocities.com/gaursoft/

    Posted by Legacy on 07/05/2003 12:00am

    Originally posted by: Gaur

    Reply
  • Problem with Large Files

    Posted by Legacy on 07/03/2003 12:00am

    Originally posted by: Lee W. Spencer

    First off, thanks for the code. I was needing to do just this very thing only a day or so before you posted GZipHelper. I was very much not looking forward to becoming that intimate with zlib.

    Secondly, I have a problem when trying to unzip a very large text(xml) file with CGZIP2A; My original zipped up data is 1.5MB, which compresses greatly to a whopping 25kB. When trying to unzip using CGZIP2A, I only get the first 644465 bytes of the original text.

    Using the following code snippet...
    (BigExample.gz is available at http://tf7.com/tf7/download/BigExample.gz)

    ************************

    FILE *InputFile = fopen("C:\\Temp\\BigExample.gz", "rb");
    lSizeofZipData = 8714;
    fread(pGZipData, 1, lSizeofZipData, InputFile);
    fclose(InputFile);

    // unzip the data
    CGZIP2A GZip((LPGZIP)pGZipData, lSizeofZipData);
    int UnzippedLen=GZip.Length;

    ******************************
    UnzippledLen comes back as 1261568 and should be 2760000, thus truncating the output.

    Any info appreciated.

    Reply
  • Can't delete the header, if you delete it ,I won't be a gzip format.

    Posted by Legacy on 07/02/2003 12:00am

    Originally posted by: gaur

    Reply
  • 10 byte header can be removed

    Posted by Legacy on 07/01/2003 12:00am

    Originally posted by: jlowrie

    The first ten bytes seem to be some sort of header
    that can be prepended upon decompression, saving a considerable amount for short buffers (as mentioned by Juan in an earlier post)

    This sequence is:

    {31,-117,8,0,0,0,0,0,0,11}

    Reply
  • well done!!!

    Posted by Legacy on 06/27/2003 12:00am

    Originally posted by: Sunia

    df sdfas dfasdf

    Reply
  • Can this work for Binary Data? LIke a DLL...

    Posted by Legacy on 06/26/2003 12:00am

    Originally posted by: San

    Can you please tell me how to compress a Binary buffer into the memory? I tried this but when I unzip the content is not same.

    Please help...

    Reply
  • in memory compress does not compress strings well

    Posted by Legacy on 06/25/2003 12:00am

    Originally posted by: Juan

    Normally when u use zlib library to compress strings in memory, the compressed result is much longer than the orginal string since no compress pattern can be developed there.
    I just wonder if this solution has the same issue?
    Thanks

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: December 11, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT Market pressures to move more quickly and develop innovative applications are forcing organizations to rethink how they develop and release applications. The combination of public clouds and physical back-end infrastructures are a means to get applications out faster. However, these hybrid solutions complicate DevOps adoption, with application delivery pipelines that span across complex hybrid cloud and non-cloud environments. Check out this …

  • With the average hard drive now averaging one terabyte in size, the fallout from the explosion of user-created data has become an overwhelming volume of potential evidence that law-enforcement and corporate investigators spend countless hours examining. Join Us and SANS' Rob Lee for our 45-minute webinar, A Triage and Collection Strategy for Time-Sensitive Investigations, will demonstrate how to: Identify the folders and files that often contain key insights Reduce the time spent sifting through content by …

Most Popular Programming Stories

More for Developers

RSS Feeds