using StgSharp.Data; using System; using System.Collections; using System.Collections.Generic; using System.Text; namespace StgSharpData { public class EncodeStream { List data; byte[] buffer; byte count; BitArray bufferArray; public int Length { get { return data.Count; } } public List EncodeData { get=> data; } public EncodeStream() { count = 0; buffer = new byte[1]; data = new List(); bufferArray = new BitArray(8,true); } public void WriteBits(HuffmanKey key) where T : struct { BitArray bit = key.GetBitArray(); for (int i = 0; i < bit.Count; i++) { if (count == 8) { bufferArray.CopyTo(buffer, 0); data.Add(buffer[0]); count = 0; } bufferArray[count] = bit[i]; count++; } } public string Output { get { return Encoding.UTF8.GetString(data.ToArray()); } } } }