J'essaye de gonfler une chaîne en utilisant la déflateur de zlib, mais elle échoue, apparemment parce qu'elle n'a pas le bon en-tête. J'ai lu ailleurs que la solution C# à ce problème est:C++ zlib inflate failing - traduction de 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();
}
}
Mais je ne sais rien sur C#. Je peux supposer que tout ce qu'il fait est d'ajouter un préfixe à la chaîne, mais quel est ce préfixe, je n'en ai aucune idée. Quelqu'un pourrait-il exprimer cette fonction (ou même simplement la création de l'en-tête et la concaténation de chaînes) en C++?
Les données que j'essaie de gonfler sont extraites d'un fichier PDF en utilisant la déflation zlib.
Merci un million, Wyatt
vous pouvez formater votre code en le sélectionnant et en appuyant sur l'icône '101010'. Je l'ai fait cette fois. –
Désolé, juste un oubli. Apprends-moi à travailler à quatre heures du matin. – wyatt
Tout d'abord, essayez de dégonfler certaines données aléatoires avec zlib. Si votre code peut le gonfler, le problème est avec les données que vous avez. Sinon, postez votre code C++ afin que nous puissions rechercher ensemble les erreurs possibles. –