BigInteger.BigInteger C# (CSharp) Method

BigInteger() public method

public BigInteger ( string value, int radix ) : System
value string
radix int
return System
        public BigInteger(string value, int radix)
        {
                BigInteger multiplier = new BigInteger(1);
                BigInteger result = new BigInteger();
                value = (value.ToUpper()).Trim();
                int limit = 0;

                if(value[0] == '-')
                        limit = 1;

                for(int i = value.Length - 1; i >= limit ; i--)
                {
                        int posVal = (int)value[i];

                        if(posVal >= '0' && posVal <= '9')
                                posVal -= '0';
                        else if(posVal >= 'A' && posVal <= 'Z')
                                posVal = (posVal - 'A') + 10;
                        else
                                posVal = 9999999;       // arbitrary large


                        if(posVal >= radix)
                                throw(new ArithmeticException("Invalid string in constructor."));
                        else
                        {
                                if(value[0] == '-')
                                        posVal = -posVal;

                                result = result + (multiplier * posVal);

                                if((i - 1) >= limit)
                                        multiplier = multiplier * radix;
                        }
                }

                if(value[0] == '-')     // negative values
                {
                        if((result.data[maxLength-1] & 0x80000000) == 0)
                                throw(new ArithmeticException("Negative underflow in constructor."));
                }
                else    // positive values
                {
                        if((result.data[maxLength-1] & 0x80000000) != 0)
                                throw(new ArithmeticException("Positive overflow in constructor."));
                }

                data = new uint[maxLength];
                for(int i = 0; i < result.dataLength; i++)
                        data[i] = result.data[i];

                dataLength = result.dataLength;
        }

Same methods

BigInteger::BigInteger ( ) : System
BigInteger::BigInteger ( BigInteger, bi ) : System
BigInteger::BigInteger ( byte inData ) : System
BigInteger::BigInteger ( byte inData, int inLen ) : System
BigInteger::BigInteger ( long value ) : System
BigInteger::BigInteger ( uint inData ) : System
BigInteger::BigInteger ( ulong value ) : System