Feedback

VB - Strings komprimieren und dekomprimieren

Veröffentlicht von am 31.05.2009
(1 Bewertungen)
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.
Snippet in C# übersetzen
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
Abgelegt unter String, komprimieren, dekomprimieren.

2 Kommentare zum Snippet

Georg Riha schrieb am 31.05.2009:
Wobei diese Funktionen nicht wirklich eine Kompression bietet wenn es sich um kleinere Strings handelt.
GoaZwerg schrieb am 17.03.2012:
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.
 

Logge dich ein, um hier zu kommentieren!