Ejemplo n.º 1
0
        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);
        }