我正在尝试将以下代码移植到 WinRT 应用:
using (var stream = new InflaterInputStream(new MemoryStream(compressedBytes)))
{
MemoryStream memory = new MemoryStream();
byte[] writeData = new byte[4096];
int resLen;
while ((resLen = stream.Read(writeData, 0, writeData.Length)) > 0)
{
memory.Write(writeData, 0, resLen);
}
uncompressedBytes = memory.ToArray();
}
我使用 SharpZipLib 作为其 InflaterInputStream
类,但没有可用的 WinRT 编译(也不能自行重新编译,因为 .NET/WinRT 之间的差异太大) .
有人对我可以使用哪些 native /第三方功能来实现相同的结果有任何建议吗?
最佳答案
好的,感谢 Hans Passant 的评论,我发现使用以下行会产生与使用 InflaterInputStream 相同的结果:
using (DeflateStream stream = new DeflateStream(new MemoryStream(compressedBytes, 2, compressedBytes.Length - 2), CompressionMode.Decompress))
跳过前两个字节的原因是它们是 zlib 规范的一部分,而不是 deflate 规范的一部分:http://george.chiramattel.com/blog/2007/09/deflatestream-block-length-does-not-match.html
关于c# - 在 WinRT 中膨胀压缩字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12894406/