public static byte[] EncodeBytes(byte[] source) { var coder = new HuffmanCoder <byte>(); coder.Build(source); var encoded = coder.Encode(source); var freq = coder.GetFrequencies(); return(BitConverter.GetBytes((short)(freq.Length)) .Concat(ToByteArray(freq)) .Concat(ToByteArray(encoded)) .ToArray()); }
static byte[] SaveHuffman(int[] seq, string name) { var seqdiff = seq.Distinct().Diff((a, b) => b - a).ToArray(); var coder = new HuffmanCoder <int>(); coder.Build(seqdiff); var encoded = coder.Encode(seqdiff); var freq = coder.GetFrequencies(); var seqhuff = BitConverter.GetBytes((short)(freq.Length)) .Concat(HuffmanHelper.ToByteArray(freq)) .Concat(HuffmanHelper.ToByteArray(encoded)) .ToArray(); seqhuff.WriteToGzip(name + "-huff"); return(seqhuff); }