在WinRT中膨胀压缩字节数组

时间:2012-10-15 11:12:34

标签: c# windows-8 windows-runtime

我正在尝试将以下代码移植到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之间的差异太大,我自己重新编译也不是一个选项。)

任何人都有任何关于我可以用来实现相同结果的原生/第三方功能的建议吗?

1 个答案:

答案 0 :(得分:2)

好的,感谢Hans Passant的评论,我发现使用以下行会产生与使用InflaterInputStream相同的结果:

using (DeflateStream stream = new DeflateStream(new MemoryStream(compressedBytes, 2, compressedBytes.Length - 2), CompressionMode.Decompress))

跳过前两个字节的原因是它们是zlib规范的一部分而不是deflate spec:http://george.chiramattel.com/blog/2007/09/deflatestream-block-length-does-not-match.html