ZLIB.net (.NET) нули после заполнения байтового массива (работает случайным образом) - PullRequest
0 голосов
/ 22 мая 2019

Меня смущает поведение алгоритма Deflate, например, первый блок байтов (размер 12 ~ 13k) всегда успешно распаковывается.Но вторая декомпрессия никогда не бывает успешной ..

Я использую DotNetZip (DeflateStream) с простым кодом, позже я переключился на ZLIB.Net (компонент аса), Org.Bouncycastle и различные библиотеки c #.

Сжатие происходит на c ++ (сервер, который отправляет пакеты) с deflateInit2, windowSize (-15) -> (15 - nowrap).

Что может бытьнеправильно происходит, чтобы у меня были нули в конце буфера, несмотря на то, что распаковка прошла успешно?

пример кода с "Org.BouncyCastle.Utilities.Zlib"
этоПримерно такой же код почти для любой библиотеки (DotNetZip, ZLIB.Net, ...)

internal static bool Inflate(byte[] compressed, out byte[] decompressed) 
{
    using (var inputStream = new MemoryStream(compressed))
    using (var zInputStream = new ZInputStream(inputStream, true))
    using (var outputStream = new MemoryStream()) 
    {
        zInputStream.CopyTo(outputStream);
        decompressed = outputStream.ToArray();
    }

    return true;
}
...