c# - 在 WinRT 中膨胀压缩字节数组

标签 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 之间的差异太大) .

有人对我可以使用哪些 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/

相关文章:

c# - 在 C# 中从列表中检索最大元素索引的优雅方法

c# - 从视频创建缩略图 - Xamarin

xaml - 如何禁用 ListView 悬停和平铺效果?

windows-8 - WebView.Navigate 导致未处理的异常

touch - 如何在 Windows 8 中触摸交互后显示指针

c# - WinRT 中的集合导航

windows-8 - 无法将 Windows 8.1 应用程序部署到 Window 8 设备

c# - 如何在 WCF 响应中重命名 xml root?

c# - 使用 Visual Studio 2012 平板电脑模拟器模拟无网络

c# - 在 C# 中比较 2 个整数列表/数组的最佳方法是什么