System.Number.HexNumberToUInt64 C# (CSharp) Method

HexNumberToUInt64() private static method

private static HexNumberToUInt64 ( NumberBuffer &number, UInt64 &value ) : Boolean
number NumberBuffer
value UInt64
return Boolean
        private unsafe static Boolean HexNumberToUInt64(ref NumberBuffer number, ref UInt64 value) {

            Int32 i = number.scale;
            if (i > UInt64Precision || i < number.precision) {
                return false;
            }
            Char* p = number.digits;
            BCLDebug.Assert(p != null, "");
            
            UInt64 n = 0;
            while (--i >= 0) {
                if (n > (0xFFFFFFFFFFFFFFFF / 16)) {
                    return false;
                }
                n *= 16;
                if (*p != '\0') {
                     UInt64 newN = n;
                    if (*p != '\0') {
                        if (*p >= '0' && *p <= '9') {
                            newN += (UInt64)(*p - '0');
                        }
                        else {
                            if (*p >= 'A' && *p <= 'F') {
                                newN += (UInt64)((*p - 'A') + 10);
                            }
                            else {
                                BCLDebug.Assert(*p >= 'a' && *p <= 'f', "");
                                newN += (UInt64)((*p - 'a') + 10);
                            }
                        }
                        p++;
                    }
                    
                    // Detect an overflow here...
                    if (newN < n) { 
                        return false;
                    }
                    n = newN;
                }
            }
            value = n;
            return true;
        }

Usage Example

示例#1
0
        private static bool HexNumberToInt64(ref Number.NumberBuffer number, ref long value)
        {
            ulong num1 = 0;
            int   num2 = Number.HexNumberToUInt64(ref number, ref num1) ? 1 : 0;

            value = (long)num1;
            return(num2 != 0);
        }
All Usage Examples Of System.Number::HexNumberToUInt64