2

次のコードを 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 の違いが大きすぎるため、自分で再コンパイルすることもできません)。

同じ結果を得るために使用できるネイティブ/サードパーティの機能について、誰か提案はありますか?

4

1 に答える 1

2

さて、Hans Passant のコメントのおかげで、次の行を使用すると、InflaterInputStream を使用した場合と同じ結果が得られることがわかりました。

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

最初の 2 バイトをスキップする理由は、それらが zlib 仕様の一部であり、deflate 仕様ではないためです。 .html

于 2012-10-15T19:36:41.110 に答える