DataFlex
DataFlex
Compress and Decompress Hex String
See more Compression Examples
Imagine we have data represented as a hex string. This example demonstrates how to decode, compress, and re-encode to a smaller hex string representing the compressed data. An even better choice is to re-encode to a more compact encoding such as base64.Note: This example requires Chilkat v9.5.0.66 or greater.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
String sStrHex
Handle hoCompress
Variant vBinDat
Handle hoBinDat
String sCompressedHex
String sCompressedBase64
String sDecompressedHex
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Move "54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A0D0A" To sStrHex
Get Create (RefClass(cComChilkatCompression)) To hoCompress
If (Not(IsComObjectCreated(hoCompress))) Begin
Send CreateComObject of hoCompress
End
Set ComAlgorithm Of hoCompress To "deflate"
Get Create (RefClass(cComChilkatBinData)) To hoBinDat
If (Not(IsComObjectCreated(hoBinDat))) Begin
Send CreateComObject of hoBinDat
End
// Load the hex string into a BinData object.
// This decodes the hexidecimal. The decoded bytes will be contained in the BinData.
Get ComAppendEncoded Of hoBinDat sStrHex "hex" To iSuccess
// Compress the BinData.
Get pvComObject of hoBinDat to vBinDat
Get ComCompressBd Of hoCompress vBinDat To iSuccess
// Get the compressed data in hex format:
Get ComGetEncoded Of hoBinDat "hex" To sCompressedHex
Showln "compressed hex:"
Showln sCompressedHex
// The compressed hex is: 0BC94855282CCD4CCE56482ACA2FCF5348CBAF50C82ACD2D484D51C82F4B2D522801CAE72456552AA4E4A7EBF172850C61E5BC5C00
// Even better, get the compressed data in base64 format:
// (base64url and modbase64 are other valid choices...)
Get ComGetEncoded Of hoBinDat "base64" To sCompressedBase64
Showln "compressed base64:"
Showln sCompressedBase64
// The compressed base64 is: C8lIVSgszUzOVkgqyi/PU0jLr1DIKs0tSE1RyC9LLVIoAcrnJFZVKqTkp+vxcoUMYeW8XAA=
// Now decompress:
Get ComClear Of hoBinDat To iSuccess
Get ComAppendEncoded Of hoBinDat sCompressedHex "hex" To iSuccess
Get pvComObject of hoBinDat to vBinDat
Get ComDecompressBd Of hoCompress vBinDat To iSuccess
Get ComGetEncoded Of hoBinDat "hex" To sDecompressedHex
Showln "decompressed hex:"
Showln sDecompressedHex
// The output is the original hex string:
// 54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A54686520717569636B2062726F776E20666F78206A756D706564206F76657220746865206C617A7920646F672E0D0A0D0A
End_Procedure