Я пытаюсь раздуть строку с помощью демпфирования zlib, но он не работает, по-видимому, потому что у него нет правильного заголовка. Я читал в другом месте, что решение C# для этой проблемы:C++ zlib inflate failing - перевод C# fixup?
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#. Я могу предположить, что все, что он делает, это добавление префикса в строку, но что это за префикс, я понятия не имею. Кто-нибудь сможет выразить эту функцию (или даже просто создание заголовка и конкатенацию строк) на C++?
Данные, которые я пытаюсь раздуть, взяты из PDF с использованием дефляции zlib.
Благодаря миллиона, Wyatt
вы можете отформатировать свой код, выбрав его и нажав значок «101010». Я сделал это на этот раз. –
Извините, просто недосмотр. Научите меня работать в четыре часа ночи. – wyatt
Сначала попробуйте фактически сдуть некоторые случайные данные с помощью zlib. Если ваш код может раздуть его, тогда проблема связана с данными, которые у вас есть. В противном случае отправьте свой код на C++, чтобы мы могли искать возможные ошибки вместе. –