using StgSharp.Data; using StgSharp.Data.FileIO; using StgSharpData; using System; using System.Collections; using System.Collections.Concurrent; using System.Runtime.InteropServices; using System.Text; namespace StgSharpDataEncoder { internal class Program { static unsafe void Main(string[] args) { string test = "aaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbsddfdsfsdfdsfsdfsdfsdfsdfsdfdsfsdfdsfsdfsdfsdfsdfsfsdfsdfccccccccccccccccccccccccc"; byte[] array = CodeSeparator.SeparateCode( Encoding.UTF8.GetBytes(test)); List<(byte, ulong)> list = CodeSeparator.CountCodeFrequency(array); foreach (var i in list) { Console.WriteLine($"{i.Item1}\t{i.Item2}"); } Console.WriteLine(); Console.WriteLine(); HuffmanTree tree = HuffmanTree.BuildHuffmanTree(list); foreach (var i in tree.LeafList) { Console.WriteLine($"{i.Value}\t{i.frequency}\t" + $"{(i.Left == null ? 0 : i.Left.frequency)}\t" + $"{(i.Right == null ? 0 : i.Right.frequency)}"); } Console.WriteLine(); Console.WriteLine(); Dictionary> encodeDictionary = tree.BuildHuffmanDictionary(); Console.WriteLine(); Console.WriteLine(); foreach (var item in encodeDictionary) { Console.WriteLine( $"{item.Key}\t" + $"{item.Value}" ); } Encode.Freeze(encodeDictionary); EncodeStream encodeStream = new EncodeStream(); foreach (var item in array) { var bits = encodeDictionary[item]; encodeStream.WriteBits(bits); } Console.WriteLine(); Console.WriteLine(); foreach (var item in encodeStream.EncodeData) { Console.Write($"{item}\t"); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine($"{array.Length}\t{encodeStream.Length}"); SSDraw testRaw = new SSDraw("test"); testRaw.WriteRaw(encodeStream.EncodeData.ToArray()); testRaw.CreateRawFile("",true); } } }