StringToNumber() private static méthode

private static StringToNumber ( String str, NumberStyles options, NumberBuffer &number, NumberFormatInfo info, Boolean parseDecimal ) : void
str String
options NumberStyles
number NumberBuffer
info NumberFormatInfo
parseDecimal Boolean
Résultat void
Exemple #1
0
        internal static unsafe Decimal ParseDecimal(string value, NumberStyles options, NumberFormatInfo numfmt)
        {
            byte *stackBuffer = stackalloc byte[Number.NumberBuffer.NumberBufferBytes];

            Number.NumberBuffer number = new Number.NumberBuffer(stackBuffer);
            Decimal             num    = new Decimal();

            Number.StringToNumber(value, options, ref number, numfmt, true);
            if (!Number.NumberBufferToDecimal(number.PackForNative(), ref num))
            {
                throw new OverflowException(Environment.GetResourceString("Overflow_Decimal"));
            }
            return(num);
        }
        internal unsafe static decimal ParseDecimal(string value, NumberStyles options, NumberFormatInfo numfmt)
        {
            byte *stackBuffer = stackalloc byte[checked (unchecked ((UIntPtr)Number.NumberBuffer.NumberBufferBytes) * 1)];

            Number.NumberBuffer numberBuffer = new Number.NumberBuffer(stackBuffer);
            decimal             result       = 0m;

            Number.StringToNumber(value, options, ref numberBuffer, numfmt, true);
            if (!Number.NumberBufferToDecimal(numberBuffer.PackForNative(), ref result))
            {
                throw new OverflowException(Environment.GetResourceString("Overflow_Decimal"));
            }
            return(result);
        }
Exemple #3
0
        internal static unsafe ulong ParseUInt64(string value, NumberStyles options, NumberFormatInfo numfmt)
        {
            byte *stackBuffer = stackalloc byte[Number.NumberBuffer.NumberBufferBytes];

            Number.NumberBuffer number = new Number.NumberBuffer(stackBuffer);
            ulong num = 0;

            Number.StringToNumber(value, options, ref number, numfmt, false);
            if ((options & NumberStyles.AllowHexSpecifier) != NumberStyles.None)
            {
                if (!Number.HexNumberToUInt64(ref number, ref num))
                {
                    throw new OverflowException(Environment.GetResourceString("Overflow_UInt64"));
                }
            }
            else if (!Number.NumberToUInt64(ref number, ref num))
            {
                throw new OverflowException(Environment.GetResourceString("Overflow_UInt64"));
            }
            return(num);
        }
Exemple #4
0
        internal static unsafe int ParseInt32(string s, NumberStyles style, NumberFormatInfo info)
        {
            byte *stackBuffer = stackalloc byte[Number.NumberBuffer.NumberBufferBytes];

            Number.NumberBuffer number = new Number.NumberBuffer(stackBuffer);
            int num = 0;

            Number.StringToNumber(s, style, ref number, info, false);
            if ((style & NumberStyles.AllowHexSpecifier) != NumberStyles.None)
            {
                if (!Number.HexNumberToInt32(ref number, ref num))
                {
                    throw new OverflowException(Environment.GetResourceString("Overflow_Int32"));
                }
            }
            else if (!Number.NumberToInt32(ref number, ref num))
            {
                throw new OverflowException(Environment.GetResourceString("Overflow_Int32"));
            }
            return(num);
        }
        internal unsafe static uint ParseUInt32(string value, NumberStyles options, NumberFormatInfo numfmt)
        {
            byte *stackBuffer = stackalloc byte[checked (unchecked ((UIntPtr)Number.NumberBuffer.NumberBufferBytes) * 1)];

            Number.NumberBuffer numberBuffer = new Number.NumberBuffer(stackBuffer);
            uint result = 0U;

            Number.StringToNumber(value, options, ref numberBuffer, numfmt, false);
            if ((options & NumberStyles.AllowHexSpecifier) != NumberStyles.None)
            {
                if (!Number.HexNumberToUInt32(ref numberBuffer, ref result))
                {
                    throw new OverflowException(Environment.GetResourceString("Overflow_UInt32"));
                }
            }
            else if (!Number.NumberToUInt32(ref numberBuffer, ref result))
            {
                throw new OverflowException(Environment.GetResourceString("Overflow_UInt32"));
            }
            return(result);
        }