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]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

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!