Compresses data using the ZLIB deflate algorithm.
VB6/VBA
Debug.Print "Testing ZLIB_Deflate ..." Dim strPlain As String Dim strBack As String Dim abPlain() As Byte Dim abCompressed() As Byte Dim nCompLen As Long Dim nUncompLen As Long Dim nRet As Long ' COMPRESSSION (deflation) ' Set the plaintext message strPlain = "hello, hello, hello. This is a 'hello world' message " & _ "for the world, repeat, for the world." ' Convert to an array of bytes abPlain = StrConv(strPlain, vbFromUnicode) nUncompLen = UBound(abPlain) + 1 ' Find required compressed length by calling with zero length value nCompLen = ZLIB_Deflate(0, 0, abPlain(0), nUncompLen) ReDim abCompressed(nCompLen - 1) ' Now compress plaintext Call ZLIB_Deflate(abCompressed(0), nCompLen, abPlain(0), nUncompLen) Debug.Print "Compressed " & nUncompLen & " bytes to " & nCompLen ' DECOMPRESSSION (inflation) ' Uncompress the compressed data ' Note: we must know the uncompressed length here ReDim abPlain(nUncompLen - 1) nRet = ZLIB_Inflate(abPlain(0), nUncompLen, abCompressed(0), nCompLen) ' Convert back to a string strBack = StrConv(abPlain, vbUnicode) Debug.Print strBack
Output
Testing ZLIB_Deflate ... Compressed 90 bytes to 68 hello, hello, hello. This is a 'hello world' message for the world, repeat, for the world.
VB.NET
Console.WriteLine("Testing ZLIB_Deflate ...")
Dim strPlain As String
Dim strBack As String
Dim abPlain() As Byte
Dim abCompressed() As Byte
''Dim nCompLen As Integer
Dim nUncompLen As Integer
''Dim nRet As Integer
' COMPRESSSION (deflation)
' Set the plaintext message
strPlain = "hello, hello, hello. This is a 'hello world' message " & _
"for the world, repeat, for the world."
' Convert to an array of bytes
abPlain = System.Text.Encoding.Default.GetBytes(strPlain)
nUncompLen = abPlain.Length
' Find required compressed length by calling with zero length value
' [VB.NET] This step not required in .NET
' Now compress plaintext
abCompressed = Zlib.Deflate(abPlain)
Console.WriteLine("Compressed " & abPlain.Length & " bytes to " & abCompressed.Length)
' DECOMPRESSSION (inflation)
' Uncompress the compressed data
' Note: we must know the uncompressed length here
''ReDim abPlain(nUncompLen - 1)
abPlain = Zlib.Inflate(abCompressed, nUncompLen)
' Convert back to a string
strBack = System.Text.Encoding.Default.GetString(abPlain)
Console.WriteLine(strBack)
[Contents]