Пример #1
0
        public static IList <byte> Huffman(HuffmanResult huffmanResult)
        {
            var huf = new Huffman();

            huf.BuildCodes(huffmanResult.BytesCounts);
            var hufResult = huf.Decode(huffmanResult.Bits);

            return(hufResult);
        }
Пример #2
0
        public static HuffmanResult Huffman(IList <byte> bytes)
        {
            var huf = new Huffman();

            huf.CountBytes(bytes);
            huf.BuildCodes();
            var hufResult = huf.Encode(bytes);

            var result = new HuffmanResult(
                bytesCounts: huf.Counts,
                bits: hufResult);

            return(result);
        }
Пример #3
0
        public byte[] Decode()
        {
            var compressedData = new CompressedData(this.Bytes.ToArray());
            var huffmanResult  = new HuffmanResult(
                bytesCounts: compressedData.HufBytesCounts,
                bits: compressedData.HufBits);

            var hufResult  = Huffman(huffmanResult);
            var rleResult1 = RLE(hufResult);
            var mtfResult  = MTF(rleResult1);
            var bwtResult  = BWT(mtfResult, compressedData.BwtInitialStringIndex);
            var rleResult2 = RLE(bwtResult);

            return(rleResult2.ToArray());
        }