using System.IO; using ComponentAce.Compression.Libs.zlib; namespace MyNes.Core; internal class ZlipWrapper { internal static void CompressData(byte[] inData, out byte[] outData) { using MemoryStream memoryStream = new MemoryStream(); using ZOutputStream zOutputStream = new ZOutputStream(memoryStream, -1); using Stream input = new MemoryStream(inData); CopyStream(input, zOutputStream); zOutputStream.finish(); outData = memoryStream.ToArray(); } internal static void DecompressData(byte[] inData, out byte[] outData) { using MemoryStream memoryStream = new MemoryStream(); using ZOutputStream zOutputStream = new ZOutputStream(memoryStream); using Stream input = new MemoryStream(inData); CopyStream(input, zOutputStream); zOutputStream.finish(); outData = memoryStream.ToArray(); } internal static void CopyStream(Stream input, Stream output) { byte[] buffer = new byte[2000]; int count; while ((count = input.Read(buffer, 0, 2000)) > 0) { output.Write(buffer, 0, count); } output.Flush(); } }