Я не вижу префиксов, извините.Вот что такое логика;извините, этого нет в C ++:
MemoryStream stream = new MemoryStream(inp);
InflaterInputStream zip = new InflaterInputStream(stream);
Создать поток инфляции из переданных данных
MemoryStream outp = new MemoryStream();
Создать поток буфера памяти для вывода
byte[] b = new byte[strict ? 4092 : 1];
try {
int n;
while ((n = zip.Read(b, 0, b.Length)) > 0) {
Если вы находитесь в строгом режиме, считывает до 4092 байтов - или 1 в нестрогом режиме - в байтовый буфер
outp.Write(b, 0, n);
Записывает все декодированные байты (может быть меньшечем 4092) к потоку буфера выходной памяти
zip.Close();
outp.Close();
return outp.ToArray();
Очистите и верните поток буфера выходной памяти в виде массива.
Хотя я немного запутался: почему бы и нетпросто обрезать массив b
в n
элементах и вернуть его, а не идти через MemoryStream
?Код также должен позаботиться о том, чтобы очистить потоки памяти и zip
в исключительных случаях (например, используя using
), поскольку все они IDisposable
, но я думаю, что это не очень важно, поскольку они не соответствуют I/ O файловые дескрипторы, только структуры памяти.