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.
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

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!