Unicode C
Unicode C
Compress Text Feed to Binary
See more Compression Examples
This example receives incoming text data in chunks, compresses as a stream, and accumulates the compressed binary data.Chilkat Unicode C Downloads
#include <C_CkBinDataW.h>
#include <C_CkCompressionW.h>
#include <C_CkStringBuilderW.h>
void ChilkatSample(void)
{
BOOL success;
HCkBinDataW bdCompressed;
HCkCompressionW compress;
HCkStringBuilderW sbUncompressedChunk;
int i;
HCkBinDataW bdDecompressed;
const wchar_t *originalText;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
bdCompressed = CkBinDataW_Create();
compress = CkCompressionW_Create();
CkCompressionW_putAlgorithm(compress,L"deflate");
CkCompressionW_putCharset(compress,L"utf-8");
sbUncompressedChunk = CkStringBuilderW_Create();
CkCompressionW_putFirstChunk(compress,TRUE);
CkCompressionW_putLastChunk(compress,FALSE);
for (i = 0; i <= 24; i++) {
if (i == 24) {
CkCompressionW_putLastChunk(compress,TRUE);
}
CkStringBuilderW_Clear(sbUncompressedChunk);
CkStringBuilderW_AppendInt(sbUncompressedChunk,i);
CkStringBuilderW_Append(sbUncompressedChunk,L": This is a line of data to be compressed...\r\n");
CkCompressionW_CompressSb(compress,sbUncompressedChunk,bdCompressed);
CkCompressionW_putFirstChunk(compress,FALSE);
}
// Show the compressed data in hex format:
wprintf(L"The hex encoded compressed text:\n");
wprintf(L"%s\n",CkBinDataW_getEncoded(bdCompressed,L"hex"));
// Now decompress in one call. It is important to set both FirstChunk and LastChunk = TRUE
bdDecompressed = CkBinDataW_Create();
CkCompressionW_putFirstChunk(compress,TRUE);
CkCompressionW_putLastChunk(compress,TRUE);
success = CkCompressionW_DecompressBd2(compress,bdCompressed,bdDecompressed);
if (success == FALSE) {
wprintf(L"%s\n",CkCompressionW_lastErrorText(compress));
CkBinDataW_Dispose(bdCompressed);
CkCompressionW_Dispose(compress);
CkStringBuilderW_Dispose(sbUncompressedChunk);
CkBinDataW_Dispose(bdDecompressed);
return;
}
originalText = CkBinDataW_getString(bdDecompressed,L"utf-8");
wprintf(L"%s\n",originalText);
CkBinDataW_Dispose(bdCompressed);
CkCompressionW_Dispose(compress);
CkStringBuilderW_Dispose(sbUncompressedChunk);
CkBinDataW_Dispose(bdDecompressed);
}