我正在尝试使用 zlib 的 deflate 为字符串充气,但它失败了,显然是因为它没有正确的标题。我在其他地方读到这个问题的 C# 解决方案是:
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++ 来表述这个函数(甚至只是头文件创建和字符串连接)吗?
我试图膨胀的数据是从使用 zlib 通缩的 PDF 中获取的。
谢谢一百万,怀亚特