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(); }