Я пытаюсь раздуть строку с помощью zlib deflate, но это не удается, по-видимому, потому, что у нее нет правильного заголовка. Я читал в другом месте, что решение этой проблемы на С#:
public static byte[] FlateDecode(byte[] inp, bool strict) {
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) {
outp.Write(b, 0, n);
}
zip.Close();
outp.Close();
return outp.ToArray();
}
catch {
if (strict)
return null;
return outp.ToArray();
}
}
Но я ничего не знаю о C#. Я могу предположить, что все, что он делает, это добавляет префикс к строке, но что это за префикс, я понятия не имею. Сможет ли кто-нибудь сформулировать эту функцию (или даже просто создание заголовка и конкатенацию строк) на С++?
Данные, которые я пытаюсь раздуть, взяты из PDF-файла с использованием дефляции zlib.
Спасибо миллион, Вятт