Sample code for 30+ languages & platforms
C

Compress Bytes to Base64 (or any other encoding)

See more Compression Examples

Compresses bytes to base64 or any other encoding. Also decompress to return the original.

Chilkat C Downloads

C
#include <C_CkBinData.h>
#include <C_CkCompression.h>
#include <C_CkByteData.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkBinData binData;
    int i;
    HCkCompression compress;
    HCkByteData uncompressedBytes;
    const char *compressedBase64;
    const char *compressedHex;
    HCkBinData binData2;

    success = FALSE;

    //  This example assumes the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    //  First create some binary data to compress.
    binData = CkBinData_Create();

    for (i = 1; i <= 16; i++) {
        CkBinData_AppendEncoded(binData,"000102030405060708090A0B0C0D0E0F","hex");
    }

    compress = CkCompression_Create();
    CkCompression_putAlgorithm(compress,"deflate");
    CkCompression_putEncodingMode(compress,"base64");

    uncompressedBytes = CkByteData_Create();
    success = CkBinData_GetBinary(binData,uncompressedBytes);

    //  Compress and return the compressed bytes in base64 format.
    compressedBase64 = CkCompression_compressBytesENC(compress,uncompressedBytes);
    printf("compressed and base64 encoded: %s\n",compressedBase64);

    //  Compress and return in hex format:
    CkCompression_putEncodingMode(compress,"hex");
    compressedHex = CkCompression_compressBytesENC(compress,uncompressedBytes);
    printf("compressed and hex encoded: %s\n",compressedHex);

    //  Now decompress..
    binData2 = CkBinData_Create();

    //  Decompress the base64..
    CkCompression_putEncodingMode(compress,"base64");
    success = CkCompression_DecompressBytesENC(compress,compressedBase64,uncompressedBytes);
    CkBinData_AppendBinary(binData2,uncompressedBytes);
    //  Show the uncompressed bytes in hex format:
    printf("%s\n",CkBinData_getEncoded(binData2,"hex"));
    printf("--\n");

    //  Decompress the hex..
    CkCompression_putEncodingMode(compress,"hex");
    success = CkCompression_DecompressBytesENC(compress,compressedHex,uncompressedBytes);
    CkBinData_Clear(binData2);
    CkBinData_AppendBinary(binData2,uncompressedBytes);
    //  Show the uncompressed bytes in hex format:
    printf("%s\n",CkBinData_getEncoded(binData2,"hex"));
    printf("--\n");


    CkBinData_Dispose(binData);
    CkCompression_Dispose(compress);
    CkByteData_Dispose(uncompressedBytes);
    CkBinData_Dispose(binData2);

    }