0

DeflateStream.Read が機能していません。圧縮されたメモリ ストリームから読み取ろうとしていますが、読み取りのバイト配列引数が空のままです。

        var memoryStream = new MemoryStream();

        var writeStream = new DeflateStream(memoryStream, CompressionLevel.Optimal, true);

        var readStream = new DeflateStream(memoryStream, CompressionMode.Decompress, true);

        var serializedPayloadBytes = Serialize(new Payload { Message = "Payload" });

        var serializedHeaderBytes = Serialize(new PayloadHeader { Length = serializedPayloadBytes.Length });

        var headerSize = serializedHeaderBytes.Length;

        var package = new byte[serializedHeaderBytes.Length + serializedPayloadBytes.Length];

        Buffer.BlockCopy(serializedHeaderBytes, 0, package, 0, serializedHeaderBytes.Length);

        Buffer.BlockCopy(serializedPayloadBytes, 0, package, serializedHeaderBytes.Length, serializedHeaderBytes.Length);

        writeStream.Write(package, 0, package.Length);

        writeStream.Flush();

        writeStream.Close();

        var arr = new byte[serializedHeaderBytes.Length];

        readStream.Read(arr, 0, headerSize);

arrは常に空 (すべてのバイトがゼロ) で、memoryStream.ToArray() にはデータがあります。

arr 引数のクイックウォッチ

4

1 に答える 1