示例#1
0
        public static uint ReverseDecode(
            LzmaRangeBitDecoder[] models,
            uint startIndex,
            LzmaRangeDecoder rangeDecoder,
            int numBitLevels)
        {
            uint num1 = 1;
            uint num2 = 0;

            if (rangeDecoder.CheckInputRequired(numBitLevels, false))
            {
                for (int index = 0; index < numBitLevels; ++index)
                {
                    uint num3 = models[(IntPtr)(startIndex + num1)].Decode(rangeDecoder);
                    if (!rangeDecoder.InputRequired)
                    {
                        num1  = (num1 << 1) + num3;
                        num2 |= num3 << index;
                    }
                    else
                    {
                        break;
                    }
                }
            }
            return(num2);
        }
示例#2
0
        public uint Decode(LzmaRangeDecoder rangeDecoder)
        {
            uint num = 1;

            if (rangeDecoder.CheckInputRequired(this.bitLevels, false))
            {
                for (int bitLevels = this.bitLevels; bitLevels > 0; --bitLevels)
                {
                    num = (num << 1) + this.models[(IntPtr)num].Decode(rangeDecoder);
                }
            }
            return(num - (uint)(1 << this.bitLevels));
        }