示例#1
0
 public static bool IsHexadecimalDigit(this byte value)
 {
     if (((int)value < 65 || (int)value > 70) && ((int)value < 97 || (int)value > 102))
     {
         return(ByteExtensions.IsDigit(value));
     }
     return(true);
 }
示例#2
0
        public HttpParser DecimalNumber(out uint?number)
        {
            if (!this.Success)
            {
                number = new uint?();
                return(this);
            }
            IEnumerable <byte> source = Enumerable.TakeWhile <byte>(this.Range, (Func <byte, bool>)(value => ByteExtensions.IsDigit(value)));

            if (!Enumerable.Any <byte>(source))
            {
                number = new uint?();
                return(this.Fail());
            }
            int num1 = Enumerable.Count <byte>(source);
            int num2 = Enumerable.Count <byte>(Enumerable.TakeWhile <byte>(source, (Func <byte, bool>)(value => (int)value == 48)));

            if (num1 - num2 > 9)
            {
                number = new uint?();
                return(this.Fail());
            }
            uint num3 = Enumerable.Aggregate <uint, uint>(Enumerable.Select <byte, uint>(source, (Func <byte, uint>)(value => (uint)value - 48U)), 0U, (Func <uint, uint, uint>)((accumulated, value) => 10U * accumulated + value));

            number        = new uint?(num3);
            this._offset += num1;
            return(this);
        }
示例#3
0
        public HttpParser DecimalNumber(int numDigits, out uint?number)
        {
            if (numDigits > 8 || numDigits < 0)
            {
                throw new ArgumentOutOfRangeException("numDigits", (object)numDigits, "Only between 0 and 8 digits are supported");
            }
            if (!this.Success)
            {
                number = new uint?();
                return(this);
            }
            IEnumerable <byte> source = Enumerable.TakeWhile <byte>(Enumerable.Take <byte>(this.Range, numDigits), (Func <byte, bool>)(value => ByteExtensions.IsDigit(value)));

            if (Enumerable.Count <byte>(source) != numDigits)
            {
                number = new uint?();
                return(this.Fail());
            }
            number        = new uint?(Enumerable.Aggregate <uint, uint>(Enumerable.Select <byte, uint>(source, (Func <byte, uint>)(value => (uint)value - 48U)), 0U, (Func <uint, uint, uint>)((accumulated, value) => 10U * accumulated + value)));
            this._offset += numDigits;
            return(this);
        }