Sprache: VB
Mit diesen Funktionen können Strings komprimiert und dekomprimiert werden.
Als Vorlage diente der C# Code von Jan Welker, den ich mit Visual Studio 2008 nach VB Net umgesetzt habe.
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text
Imports System
Imports System.IO.Compression
Public Class Form1
Public Shared Function Compress(ByVal text As String) As String
Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
Dim memoryStream = New MemoryStream()
Using gZipStream = New GZipStream(memoryStream, CompressionMode.Compress, True)
gZipStream.Write(buffer, 0, buffer.Length)
End Using
memoryStream.Position = 0
Dim compressedData = New Byte(memoryStream.Length - 1) {}
memoryStream.Read(compressedData, 0, compressedData.Length)
Dim gZipBuffer = New Byte(compressedData.Length + 4 - 1) {}
System.Buffer.BlockCopy(compressedData, 0, gZipBuffer, 4, compressedData.Length)
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gZipBuffer, 0, 4)
Return Convert.ToBase64String(gZipBuffer)
End Function
Public Shared Function DecompressString(ByVal compressedText As String) As String
Dim gZipBuffer() As Byte = Convert.FromBase64String(compressedText)
Using memoryStream = New MemoryStream()
Dim dataLength As Integer = BitConverter.ToInt32(gZipBuffer, 0)
memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4)
Dim buffer = New Byte(dataLength - 1) {}
memoryStream.Position = 0
Using gZipStream = New GZipStream(memoryStream, CompressionMode.Decompress)
gZipStream.Read(buffer, 0, buffer.Length)
End Using
Return Encoding.UTF8.GetString(buffer)
End Using
End Function
End Class
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text
Imports System
Imports System.IO.Compression
Public Class Form1
Public Shared Function Compress(ByVal text As String) As String
Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
Dim memoryStream = New MemoryStream()
Using gZipStream = New GZipStream(memoryStream, CompressionMode.Compress, True)
gZipStream.Write(buffer, 0, buffer.Length)
End Using
memoryStream.Position = 0
Dim compressedData = New Byte(memoryStream.Length - 1) {}
memoryStream.Read(compressedData, 0, compressedData.Length)
Dim gZipBuffer = New Byte(compressedData.Length + 4 - 1) {}
System.Buffer.BlockCopy(compressedData, 0, gZipBuffer, 4, compressedData.Length)
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gZipBuffer, 0, 4)
Return Convert.ToBase64String(gZipBuffer)
End Function
Public Shared Function DecompressString(ByVal compressedText As String) As String
Dim gZipBuffer() As Byte = Convert.FromBase64String(compressedText)
Using memoryStream = New MemoryStream()
Dim dataLength As Integer = BitConverter.ToInt32(gZipBuffer, 0)
memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4)
Dim buffer = New Byte(dataLength - 1) {}
memoryStream.Position = 0
Using gZipStream = New GZipStream(memoryStream, CompressionMode.Decompress)
gZipStream.Read(buffer, 0, buffer.Length)
End Using
Return Encoding.UTF8.GetString(buffer)
End Using
End Function
End Class
Alte URL:
/snippet/strings-komprimieren-und-dekomprimieren/1144
Wobei diese Funktionen nicht wirklich eine Kompression bietet wenn es sich um kleinere Strings handelt.
Dieses Code-Snippet missachtet mehrfach die Coding-Conventions, ist aber dennoch hilfreich, wenn man sich die Mühe macht es anzupassen. Unverständlich warum der Autor dies vor der Veröffentlichung nicht mal selbst berücksichtigt hat. Dennoch danke dafür.