Convert.ToUInt64 Method (String, IFormatProvider)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Converts the specified string representation of a number to an equivalent 64-bit unsigned integer, using the specified culture-specific formatting information.

This API is not CLS-compliant.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public static ulong ToUInt64(
	string value,
	IFormatProvider provider


Type: System.String

A string that contains the number to convert.

Type: System.IFormatProvider

An object that supplies culture-specific formatting information.

Return Value

Type: System.UInt64

A 64-bit unsigned integer that is equivalent to the number in value, or 0 (zero) if value is null.

Exception Condition

value does not consist of an optional sign followed by a sequence of digits (0 through 9).


value represents a number that is less than UInt64.MinValue or greater than UInt64.MaxValue.

The return value is the result of invoking UInt64.Parse on value.

provider is an IFormatProvider implementation that obtains a NumberFormatInfo object. The NumberFormatInfo object provides culture-specific information about the format of value. If provider is null, the NumberFormatInfo object for the current culture is used.

If you prefer not to handle an exception if the conversion fails, you can call the UInt64.TryParse method instead. It returns a Boolean value that indicates whether the conversion succeeded or failed.

The following example defines a custom NumberFormatInfo object that recognizes the string "pos" as the positive sign and the string "neg" as the negative sign. It then attempts to convert each element of a numeric string array to an unsigned long integer. The conversion uses both the custom provider and the NumberFormatInfo provider for the invariant culture.

using System;
using System.Globalization;

public class Example
   public static void Main()
      // Create a NumberFormatInfo object and set several properties.
      NumberFormatInfo provider = new NumberFormatInfo();
      provider.PositiveSign = "pos ";
      provider.NegativeSign = "neg ";

      // Define an array of numeric strings.
      string[] values = { "123456789012", "+123456789012",
                          "pos 123456789012", "123456789012.",
                          "123,456,789,012", "18446744073709551615",
                          "18446744073709551616", "neg 1", "-1" };
      //  Convert the strings using the format provider.
      foreach (string value in values)
         Console.Write("{0,-20}  -->  ", value);
         try {
            Console.WriteLine("{0,20}", Convert.ToUInt64(value, provider));
         catch (FormatException) {
            Console.WriteLine("{0,20}", "Invalid Format");
         catch (OverflowException) {
            Console.WriteLine("{0,20}", "Numeric Overflow");
// The example displays the following output:
//    123456789012          -->          123456789012
//    +123456789012         -->        Invalid Format
//    pos 123456789012      -->          123456789012
//    123456789012.         -->        Invalid Format
//    123,456,789,012       -->        Invalid Format
//    18446744073709551615  -->  18446744073709551615
//    18446744073709551616  -->      Numeric Overflow
//    neg 1                 -->      Numeric Overflow
//    -1                    -->        Invalid Format

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top