示例#1
0
        private void ZlibCompress(MemoryStream dst, MemoryStream src)
        {
            dst.Write(_zlibHeader, 0, _zlibHeader.Length);

            src.TryGetBuffer(out ArraySegment <byte> bufArray);
            _adler32.CalculateChecksum(bufArray.Array, bufArray.Offset, bufArray.Count);

            using (var deflateStream = new DeflateStream(dst, CompressionMode.Compress, true))
                deflateStream.Write(bufArray.Array, bufArray.Offset, bufArray.Count);

            var checksum = _adler32.Checksum;

            _checksumBuf[0] = (byte)(checksum >> 24);
            _checksumBuf[1] = (byte)(checksum >> 16);
            _checksumBuf[2] = (byte)(checksum >> 8);
            _checksumBuf[3] = (byte)(checksum >> 0);
            dst.Write(_checksumBuf, 0, _checksumBuf.Length);
            _adler32.Reset();
        }