Сбой распаковки GZipStream. NET Core 2.1 - PullRequest
0 голосов
/ 16 июня 2020

У меня есть данные zlib в кодировке base-64, которые я пытаюсь распаковать в исходную строку. Следующий код отлично подходит для этого на. NET Framework 4.8.

string base64 = "eJzzSM3JyVcozy/KSVEEAB0JBF4=";
byte[] bytes = Convert.FromBase64String(base64);
string output;
using (MemoryStream stream = new MemoryStream(bytes))
{
    using (GZipStream gZipStream = new GZipStream(stream, CompressionMode.Decompress))
    {
        using (StreamReader reader = new StreamReader(gZipStream))
            output = reader.ReadToEnd();
    }
}
Console.WriteLine(output);

Ожидаемый результат здесь - «Hello world!» как тестовая строка. Однако код не работает. NET Core 2.1 со следующим исключением:

System.IO.InvalidDataException: запись архива была сжата с использованием неподдерживаемого метода сжатия. в System.IO.Compression.Inflater.Inflate (FlushCode flushCode) в System.IO.Compression.Inflater.ReadInflateOutput (Byte * bufPtr, длина Int32, FlushCode flushCode, Int32 & bytesRead) в System.IO.Compression.Inflater.InflateVerified (Byte * bufPtr, длина Int32) в System.IO.Compression.DeflateStream.ReadCore (буфер Span`1) в System.IO.Compression.DeflateStream.Read (массив Byte [], смещение Int32, количество Int32) в System.IO.Compression .GZipStream.Read (массив Byte [], смещение Int32, счетчик Int32) в System.IO.StreamReader.ReadBuffer () в System.IO.StreamReader.ReadToEnd ()

В документации нет укажите, что я могу найти, почему. NET Core не будет совместим с используемым здесь форматом zlib.

Реализация в Core как-то отличается? Он полностью отсутствует?

...