コード例 #1
0
        public List <byte> Decode()
        {
            var encodedModel = new EncodedModel(_encodedBytes);

            var mtfBytes = encodedModel.Bytes;

            if (encodedModel.IsUnary)
            {
                var unaryModel = new UnaryModel(encodedModel.Frequencies, encodedModel.Bytes);
                var unaryCoder = new UnaryCoder();
                mtfBytes = unaryCoder.Decode(unaryModel);
            }


            var mtfCoder = new MtfCoder();
            var bwtBytes = mtfCoder.Decode(mtfBytes);

            var bwtModel = new BwtModel(encodedModel.OriginalIndex, bwtBytes);
            var bwtCoder = new BwtCoder();
            var rleBytes = bwtCoder.Decode(bwtModel);

            if (encodedModel.IsRle)
            {
                var rleCoder = new RleCoder();
                _decodedBytes = rleCoder.Decode(rleBytes);
            }
            else
            {
                _decodedBytes = rleBytes;
            }


            return(_decodedBytes);
        }