Сжатие VB.Net GZip создает слишком много данных и не может быть декодировано - PullRequest
1 голос
/ 29 июня 2019

Я пытаюсь сжать строку ascii (base64) с помощью GZip, однако она выдает больше данных, чем меньше. Кто-нибудь может помочь?

Это старый проект, и я ограничен компиляторами и версиями Framework. Я пробовал MSBuild 2.0, 3.5 и 4.0 - все они дают одинаковые ошибочные результаты.

Imports System.IO.Compression

Private Function GZipString(ByVal asciiString As String) as Byte()

    Debug.Print ("asciiString length : {0}", asciiString.Length )
    Dim asciibytes As Byte() = Encoding.ASCII.GetBytes(asciiString)
    Debug.Print ("asciibytes length : {0}", asciibytes.Length )

    'GZip the string
    Dim ms As New MemoryStream()
    Dim gzips As New GZipStream(ms, CompressionMode.Compress)
    gzips.Write(asciibytes, 0, asciibytes.Length)
    gzips.Close()

    GZipString = ms.ToArray
    ms.Close()
    Debug.Print ("compressedBytes length : {0}", GZipString.Length )

End Function

Вывод, который я получаю: -

  • длина строки ascii: 3607
  • длина ацибайт: 3607
  • длина сжатого байта: 3985
...