/// <inheritdoc /> public byte[] Compress(byte[] data, Action <double> progressFunc = null) { CoderPropID[] propIDs = { CoderPropID.DictionarySize, CoderPropID.PosStateBits, CoderPropID.LitContextBits, CoderPropID.LitPosBits, CoderPropID.Algorithm, CoderPropID.NumFastBytes, CoderPropID.MatchFinder, CoderPropID.EndMarker }; object[] properties = { 1 << 23, 2, 3, 0, 2, 128, "bt4", false }; var x = new MemoryStream(); var encoder = new Encoder(); encoder.SetCoderProperties(propIDs, properties); encoder.WriteCoderProperties(x); var length = BitConverter.GetBytes(data.Length); if (!BitConverter.IsLittleEndian) { Array.Reverse(length); } // Store 4 byte length value (little-endian) x.Write(length, 0, sizeof(int)); ICodeProgress progress = null; if (progressFunc != null) { progress = new CompressionLogger(progressFunc, data.Length); } encoder.Code(new MemoryStream(data), x, -1, -1, progress); return(x.ToArray()); }
/// <inheritdoc /> public byte[] Compress(byte[] data, Action <double> progressFunc = null) { CoderPropID[] propIDs = { CoderPropID.DictionarySize, CoderPropID.PosStateBits, CoderPropID.LitContextBits, CoderPropID.LitPosBits, CoderPropID.Algorithm, CoderPropID.NumFastBytes, CoderPropID.MatchFinder, CoderPropID.EndMarker }; object[] properties = { 1 << 23, 2, 3, 0, 2, 128, "bt4", false }; var x = new MemoryStream(); var encoder = new Encoder(); encoder.SetCoderProperties(propIDs, properties); encoder.WriteCoderProperties(x); Int64 fileSize; fileSize = data.Length; for (var i = 0; i < 8; i++) { x.WriteByte((Byte)(fileSize >> (8 * i))); } ICodeProgress progress = null; if (progressFunc != null) { progress = new CompressionLogger(progressFunc, data.Length); } encoder.Code(new MemoryStream(data), x, -1, -1, progress); return(x.ToArray()); }
/// <inheritdoc /> public byte[] Compress(byte[] data, Action<double> progressFunc = null) { CoderPropID[] propIDs = { CoderPropID.DictionarySize, CoderPropID.PosStateBits, CoderPropID.LitContextBits, CoderPropID.LitPosBits, CoderPropID.Algorithm, CoderPropID.NumFastBytes, CoderPropID.MatchFinder, CoderPropID.EndMarker }; object[] properties = { 1 << 23, 2, 3, 0, 2, 128, "bt4", false }; var x = new MemoryStream(); var encoder = new Encoder(); encoder.SetCoderProperties(propIDs, properties); encoder.WriteCoderProperties(x); Int64 fileSize; fileSize = data.Length; for (int i = 0; i < 8; i++) x.WriteByte((Byte)(fileSize >> (8 * i))); ICodeProgress progress = null; if (progressFunc != null) progress = new CompressionLogger(progressFunc, data.Length); encoder.Code(new MemoryStream(data), x, -1, -1, progress); return x.ToArray(); }