Convert.ToUInt64 方法

定义

将指定的值转换为 64 位无符号整数。

重载

ToUInt64(String)

将数字的指定字符串表示形式转换为等效的 64 位无符号整数。

ToUInt64(UInt16)

将指定的 16 位无符号整数的值转换为等效的 64 位无符号整数。

ToUInt64(UInt32)

将指定的 32 位无符号整数的值转换为等效的 64 位无符号整数。

ToUInt64(String, IFormatProvider)

使用指定的区域性特定格式设置信息,将数字的指定字符串表示形式转换为等效的 64 位无符号整数。

ToUInt64(Object, IFormatProvider)

使用指定的区域性特定格式信息,将指定对象的值转换为 64 位无符号整数。

ToUInt64(Single)

将指定的单精度浮点数的值转换为等效的 64 位无符号整数。

ToUInt64(String, Int32)

将指定基数的数字的字符串表示形式转换为等效的 64 位无符号整数。

ToUInt64(UInt64)

返回指定的 64 位无符号整数;不执行任何实际的转换。

ToUInt64(SByte)

将指定的 8 位有符号整数的值转换为等效的 64 位无符号整数。

ToUInt64(Int16)

将指定的 16 位有符号整数的值转换为等效的 64 位无符号整数。

ToUInt64(Int64)

将指定的 64 位有符号整数的值转换为等效的 64 位无符号整数。

ToUInt64(Int32)

将指定的 32 位有符号整数的值转换为等效的 64 位无符号整数。

ToUInt64(Double)

将指定的双精度浮点数的值转换为等效的 64 位无符号整数。

ToUInt64(Decimal)

将指定的十进制数的值转换为等效的 64 位无符号整数。

ToUInt64(DateTime)

调用此方法始终引发 InvalidCastException

ToUInt64(Char)

将指定 Unicode 字符的值转换为等效的 64 位无符号整数。

ToUInt64(Byte)

将指定的 8 位无符号整数的值转换为等效的 64 位无符号整数。

ToUInt64(Boolean)

将指定的布尔值转换为等效的 64 位无符号整数。

ToUInt64(Object)

将指定对象的值转换为 64 位无符号整数。

ToUInt64(String)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将数字的指定字符串表示形式转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (string value);
[System.CLSCompliant(false)]
public static ulong ToUInt64 (string? value);

参数

value
String

包含要转换的数字的字符串。

返回

一个与 value 中数字等效的 64 位带符号整数,如果 valuenull,则为 0(零)。

属性

例外

value 不由一个可选符号后跟一系列数字 (0-9) 组成。

示例

以下示例将字符串数组的元素解释为数值字符串,并尝试将其转换为无符号长整数。

string[] values = { "One", "1.34e28", "-26.87", "-18", "-6.00",
                    " 0", "137", "1601.9", Int32.MaxValue.ToString() };
ulong result;

foreach (string value in values)
{
   try {
      result = Convert.ToUInt64(value);
      Console.WriteLine("Converted the {0} value '{1}' to the {2} value {3}.",
                        value.GetType().Name, value, result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the UInt64 type.", value);
   }
   catch (FormatException) {
      Console.WriteLine("The {0} value '{1}' is not in a recognizable format.",
                        value.GetType().Name, value);
   }
}
// The example displays the following output:
//    The String value 'One' is not in a recognizable format.
//    The String value '1.34e28' is not in a recognizable format.
//    The String value '-26.87' is not in a recognizable format.
//    -18 is outside the range of the UInt64 type.
//    The String value '-6.00' is not in a recognizable format.
//    Converted the String value ' 0' to the UInt64 value 0.
//    Converted the String value '137' to the UInt64 value 137.
//    The String value '1601.9' is not in a recognizable format.
//    Converted the String value '2147483647' to the UInt64 value 2147483647.

注解

ToInt64(String)使用 方法等效于将 Int64.Parse(String) 传递给 value 方法。 value 通过使用当前区域性的格式设置约定进行解释。

如果不想在转换失败时处理异常,可以改为调用 UInt64.TryParse 方法。 它返回一个 Boolean 值,该值指示转换是成功还是失败。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(UInt16)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的 16 位无符号整数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (ushort value);

参数

value
UInt16

要转换的 16 位无符号整数。

返回

一个与 value 等效的 64 位无符号整数。

属性

示例

以下示例将无符号 16 位整数数组中的每个元素转换为无符号长整数。

ushort[] numbers = { UInt16.MinValue, 121, 340, UInt16.MaxValue };
ulong result;

foreach (ushort number in numbers)
{
   try {
      result = Convert.ToUInt64(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the UInt64 type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    Converted the UInt16 value 0 to the UInt64 value 0.
//    Converted the UInt16 value 121 to the UInt64 value 121.
//    Converted the UInt16 value 340 to the UInt64 value 340.
//    Converted the UInt16 value 65535 to the UInt64 value 65535.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(UInt32)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的 32 位无符号整数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (uint value);

参数

value
UInt32

要转换的 32 位无符号整数。

返回

一个与 value 等效的 64 位无符号整数。

属性

示例

以下示例将无符号整数数组中的每个元素转换为无符号长整数。

uint[] numbers = { UInt32.MinValue, 121, 340, UInt32.MaxValue };
ulong result;

foreach (uint number in numbers)
{
   try {
      result = Convert.ToUInt64(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the UInt64 type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    Converted the UInt32 value 0 to the UInt64 value 0.
//    Converted the UInt32 value 121 to the UInt64 value 121.
//    Converted the UInt32 value 340 to the UInt64 value 340.
//    Converted the UInt32 value 4294967295 to the UInt64 value 4294967295.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(String, IFormatProvider)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

使用指定的区域性特定格式设置信息,将数字的指定字符串表示形式转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (string value, IFormatProvider provider);
[System.CLSCompliant(false)]
public static ulong ToUInt64 (string? value, IFormatProvider? provider);

参数

value
String

包含要转换的数字的字符串。

provider
IFormatProvider

一个提供区域性特定的格式设置信息的对象。

返回

一个与 value 中数字等效的 64 位无符号整数,如果 valuenull,则为 0(零)。

属性

例外

value 不由一个可选符号后跟一系列数字 (0-9) 组成。

示例

以下示例定义一个自定义 NumberFormatInfo 对象,该对象将字符串“pos”识别为正号,将字符串“neg”识别为负号。 然后,它会尝试将数值字符串数组的每个元素转换为无符号长整数。 转换将自定义提供程序和 NumberFormatInfo 提供程序用于固定区域性。

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

注解

返回值是在 上value调用 UInt64.Parse 的结果。

provider 是获取 IFormatProviderNumberFormatInfo 对象的实现。 对象 NumberFormatInfo 提供有关 格式的 value区域性特定信息。 如果 providernull,则 NumberFormatInfo 使用当前区域性的 对象。

如果不想在转换失败时处理异常,可以改为调用 UInt64.TryParse 方法。 它返回一个 Boolean 值,该值指示转换是成功还是失败。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Object, IFormatProvider)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

使用指定的区域性特定格式信息,将指定对象的值转换为 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (object value, IFormatProvider provider);
[System.CLSCompliant(false)]
public static ulong ToUInt64 (object? value, IFormatProvider? provider);

参数

value
Object

一个实现 IConvertible 接口的对象。

provider
IFormatProvider

一个提供区域性特定的格式设置信息的对象。

返回

一个与 value 等效的 64 位无符号整数,如果 valuenull,则为零。

属性

例外

value 的格式不正确。

value 不实现 IConvertible 接口。

不支持该转换。

示例

以下示例定义实现 HexString 接口的类,该类 IConvertible 旨在保存 64 位有符号值和 64 位无符号值的字符串表示形式。 类包含一个 Sign 属性,该属性指示其十六进制值的符号。

using System;
using System.Globalization;
using System.Text.RegularExpressions;

public enum SignBit { Negative=-1, Zero=0, Positive=1 };

public struct HexString : IConvertible
{
   private SignBit signBit;
   private string hexString;

   public SignBit Sign
   {
      set { signBit = value; }
      get { return signBit; }
   }

   public string Value
   {
      set
      {
         if (value.Trim().Length > 16)
            throw new ArgumentException("The hexadecimal representation of a 64-bit integer cannot have more than 16 characters.");
         else if (! Regex.IsMatch(value, "([0-9,A-F]){1,8}", RegexOptions.IgnoreCase))
            throw new ArgumentException("The hexadecimal representation of a 64-bit integer contains invalid characters.");
         else
            hexString = value;
      }
      get { return hexString; }
   }

   // IConvertible implementations.
   public TypeCode GetTypeCode()
   {
      return TypeCode.Object;
   }

   public bool ToBoolean(IFormatProvider provider)
   {
      return signBit != SignBit.Zero;
   }

   public byte ToByte(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         throw new OverflowException(String.Format("{0} is out of range of the Byte type.", Convert.ToInt64(hexString, 16)));
      else
         try {
            return Byte.Parse(hexString, NumberStyles.HexNumber);
         }
         catch (OverflowException e) {
            throw new OverflowException(String.Format("{0} is out of range of the Byte type.", Convert.ToUInt64(hexString, 16)), e);
         }
   }

   public char ToChar(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         throw new OverflowException(String.Format("{0} is out of range of the Char type.", Convert.ToInt64(hexString, 16)));

      try {
         ushort codePoint = UInt16.Parse(this.hexString, NumberStyles.HexNumber);
         return Convert.ToChar(codePoint);
      }
      catch (OverflowException) {
         throw new OverflowException(String.Format("{0} is out of range of the Char type.", Convert.ToUInt64(hexString, 16)));
      }
   }

   public DateTime ToDateTime(IFormatProvider provider)
   {
      throw new InvalidCastException("Hexadecimal to DateTime conversion is not supported.");
   }

   public decimal ToDecimal(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
      {
         long hexValue = Int64.Parse(hexString, NumberStyles.HexNumber);
         return Convert.ToDecimal(hexValue);
      }
      else
      {
         ulong hexValue = UInt64.Parse(hexString, NumberStyles.HexNumber);
         return Convert.ToDecimal(hexValue);
      }
   }

   public double ToDouble(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         return Convert.ToDouble(Int64.Parse(hexString, NumberStyles.HexNumber));
      else
         return Convert.ToDouble(UInt64.Parse(hexString, NumberStyles.HexNumber));
   }

   public short ToInt16(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         try {
            return Convert.ToInt16(Int64.Parse(hexString, NumberStyles.HexNumber));
         }
         catch (OverflowException e) {
            throw new OverflowException(String.Format("{0} is out of range of the Int16 type.", Convert.ToInt64(hexString, 16)), e);
         }
      else
         try {
            return Convert.ToInt16(UInt64.Parse(hexString, NumberStyles.HexNumber));
         }
         catch (OverflowException e) {
            throw new OverflowException(String.Format("{0} is out of range of the Int16 type.", Convert.ToUInt64(hexString, 16)), e);
         }
   }

   public int ToInt32(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         try {
            return Convert.ToInt32(Int64.Parse(hexString, NumberStyles.HexNumber));
         }
         catch (OverflowException e) {
            throw new OverflowException(String.Format("{0} is out of range of the Int32 type.", Convert.ToUInt64(hexString, 16)), e);
         }
      else
         try {
            return Convert.ToInt32(UInt64.Parse(hexString, NumberStyles.HexNumber));
         }
         catch (OverflowException e) {
            throw new OverflowException(String.Format("{0} is out of range of the Int32 type.", Convert.ToUInt64(hexString, 16)), e);
         }
   }

   public long ToInt64(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         return Int64.Parse(hexString, NumberStyles.HexNumber);
      else
         try {
            return Convert.ToInt64(UInt64.Parse(hexString, NumberStyles.HexNumber));
         }
         catch (OverflowException e) {
            throw new OverflowException(String.Format("{0} is out of range of the Int64 type.", Convert.ToUInt64(hexString, 16)), e);
         }
   }

   public sbyte ToSByte(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         try {
            return Convert.ToSByte(Int64.Parse(hexString, NumberStyles.HexNumber));
         }
         catch (OverflowException e) {
            throw new OverflowException(String.Format("{0} is outside the range of the SByte type.",
                                                      Int64.Parse(hexString, NumberStyles.HexNumber), e));
         }
      else
         try {
            return Convert.ToSByte(UInt64.Parse(hexString, NumberStyles.HexNumber));
         }
         catch (OverflowException e) {
            throw new OverflowException(String.Format("{0} is outside the range of the SByte type.",
                                                    UInt64.Parse(hexString, NumberStyles.HexNumber)), e);
         }
   }

   public float ToSingle(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         return Convert.ToSingle(Int64.Parse(hexString, NumberStyles.HexNumber));
      else
         return Convert.ToSingle(UInt64.Parse(hexString, NumberStyles.HexNumber));
   }

   public string ToString(IFormatProvider provider)
   {
      return "0x" + this.hexString;
   }

   public object ToType(Type conversionType, IFormatProvider provider)
   {
      switch (Type.GetTypeCode(conversionType))
      {
         case TypeCode.Boolean:
            return this.ToBoolean(null);
         case TypeCode.Byte:
            return this.ToByte(null);
         case TypeCode.Char:
            return this.ToChar(null);
         case TypeCode.DateTime:
            return this.ToDateTime(null);
         case TypeCode.Decimal:
            return this.ToDecimal(null);
         case TypeCode.Double:
            return this.ToDouble(null);
         case TypeCode.Int16:
            return this.ToInt16(null);
         case TypeCode.Int32:
            return this.ToInt32(null);
         case TypeCode.Int64:
            return this.ToInt64(null);
         case TypeCode.Object:
            if (typeof(HexString).Equals(conversionType))
               return this;
            else
               throw new InvalidCastException(String.Format("Conversion to a {0} is not supported.", conversionType.Name));
         case TypeCode.SByte:
            return this.ToSByte(null);
         case TypeCode.Single:
            return this.ToSingle(null);
         case TypeCode.String:
            return this.ToString(null);
         case TypeCode.UInt16:
            return this.ToUInt16(null);
         case TypeCode.UInt32:
            return this.ToUInt32(null);
         case TypeCode.UInt64:
            return this.ToUInt64(null);
         default:
            throw new InvalidCastException(String.Format("Conversion to {0} is not supported.", conversionType.Name));
      }
   }

   public ushort ToUInt16(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         throw new OverflowException(String.Format("{0} is outside the range of the UInt16 type.",
                                                   Int64.Parse(hexString, NumberStyles.HexNumber)));
      else
         try {
            return Convert.ToUInt16(UInt64.Parse(hexString, NumberStyles.HexNumber));
         }
         catch (OverflowException e) {
            throw new OverflowException(String.Format("{0} is out of range of the UInt16 type.", Convert.ToUInt64(hexString, 16)), e);
         }
   }

   public uint ToUInt32(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         throw new OverflowException(String.Format("{0} is outside the range of the UInt32 type.",
                                                   Int64.Parse(hexString, NumberStyles.HexNumber)));
      else
         try {
            return Convert.ToUInt32(UInt64.Parse(hexString, NumberStyles.HexNumber));
         }
         catch (OverflowException) {
            throw new OverflowException(String.Format("{0} is outside the range of the UInt32 type.",
                                                      UInt64.Parse(hexString, NumberStyles.HexNumber)));
         }
   }

   public ulong ToUInt64(IFormatProvider provider)
   {
      if (signBit == SignBit.Negative)
         throw new OverflowException(String.Format("{0} is outside the range of the UInt64 type.",
                                                   Int64.Parse(hexString, NumberStyles.HexNumber)));
      else
         return Convert.ToUInt64(hexString, 16);
   }
}

以下示例显示,对 ToUInt64(Object, IFormatProvider) 将 对象作为参数传递 HexString 的方法的调用反过来又调用 IConvertible.ToUInt64 类的 HexString 实现。

public class Example
{
   public static void Main()
   {
      ulong positiveValue = UInt64.MaxValue - 100000;
      long negativeValue = -1;

      HexString positiveString = new HexString();
      positiveString.Sign = (SignBit) Math.Sign((decimal)positiveValue);
      positiveString.Value = positiveValue.ToString("X");

      HexString negativeString = new HexString();
      negativeString.Sign = (SignBit) Math.Sign(negativeValue);
      negativeString.Value = negativeValue.ToString("X");

      try {
         Console.WriteLine("0x{0} converts to {1}.", positiveString.Value, Convert.ToUInt64(positiveString));
      }
      catch (OverflowException) {
         Console.WriteLine("{0} is outside the range of the UInt64 type.",
                           Int64.Parse(positiveString.Value, NumberStyles.HexNumber));
      }

      try {
         Console.WriteLine("0x{0} converts to {1}.", negativeString.Value, Convert.ToUInt64(negativeString));
      }
      catch (OverflowException) {
         Console.WriteLine("{0} is outside the range of the UInt64 type.",
                           Int64.Parse(negativeString.Value, NumberStyles.HexNumber));
      }
   }
}
// The example displays the following output:
//       0xFFFFFFFFFFFE795F converts to 18446744073709451615.
//       -1 is outside the range of the UInt64 type.

注解

返回值是调用 IConvertible.ToUInt64 基础类型的 value方法的结果。

provider 使用户能够指定有关 的内容 value的区域性特定转换信息。 例如,如果 value 是 一个 String 表示数字的 , provider 则可提供有关用于表示该数字的表示法的区域性特定信息。

基类型忽略 provider;但是,如果 value 是实现 IConvertible 接口的用户定义类型,可以使用 参数。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Single)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的单精度浮点数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (float value);

参数

value
Single

要转换的单精度浮点数。

返回

value,舍入为最接近的 64 位无符号整数。 如果 value 为两个整数中间的数字,则返回二者中的偶数;即 4.5 转换为 4,而 5.5 转换为 6。

属性

例外

value 小于零或大于 UInt64.MaxValue

示例

以下示例尝试将值数组 Single 中的每个元素转换为无符号长整数。 输出显示,在执行转换之前,小数点值已舍入。

float[] values= { Single.MinValue, -1.38e10f, -1023.299f, -12.98f,
                  0f, 9.113e-16f, 103.919f, 17834.191f, Single.MaxValue };
ulong result;

foreach (float value in values)
{
   try {
      result = Convert.ToUInt64(value);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        value.GetType().Name, value, result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the UInt64 type.", value);
   }
}
// The example displays the following output:
//    -3.402823E+38 is outside the range of the UInt64 type.
//    -1.38E+10 is outside the range of the UInt64 type.
//    -1023.299 is outside the range of the UInt64 type.
//    -12.98 is outside the range of the UInt64 type.
//    Converted the Single value 0 to the UInt64 value 0.
//    Converted the Single value 9.113E-16 to the UInt64 value 0.
//    Converted the Single value 103.919 to the UInt64 value 104.
//    Converted the Single value 17834.19 to the UInt64 value 17834.
//    3.402823E+38 is outside the range of the UInt64 type.

另请参阅

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(String, Int32)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定基数的数字的字符串表示形式转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (string value, int fromBase);
[System.CLSCompliant(false)]
public static ulong ToUInt64 (string? value, int fromBase);

参数

value
String

包含要转换的数字的字符串。

fromBase
Int32

value 中数字的基数,它必须是 2、8、10 或 16。

返回

一个与 value 中数字等效的 64 位无符号整数,如果 valuenull,则为 0(零)。

属性

例外

fromBase 不是 2、8、10 或 16。

value(表示非 10 为基数的无符号数字)的前面带一个负号。

value 包含一个字符,该字符不是由 fromBase 指定的基数中的有效数字。 如果 value 中的第一个字符无效,则该异常消息指示没有要转换的数字;否则,该消息指示 value 包含无效的尾随字符。

value(表示非 10 为基数的无符号数字)的前面带一个负号。

value 表示小于 UInt64.MinValue 或大于 UInt64.MaxValue 的数字

示例

以下示例尝试将数值字符串数组中的每个元素解释为十六进制值,并将其转换为无符号长整数。

using System;

public class Example
{
   public static void Main()
   {
      string[] hexStrings = { "8000000000000000", "0FFFFFFFFFFFFFFF",
                              "F000000000000000", "00A3000000000000",
                              "D", "-13", "9AC61", "GAD",
                              "FFFFFFFFFFFFFFFFF" };

      foreach (string hexString in hexStrings)
      {
         Console.Write("{0,-18}  -->  ", hexString);
         try {
            ulong number = Convert.ToUInt64(hexString, 16);
            Console.WriteLine("{0,26:N0}", number);
         }
         catch (FormatException) {
            Console.WriteLine("{0,26}", "Bad Format");
         }
         catch (OverflowException) {
            Console.WriteLine("{0,26}", "Numeric Overflow");
         }
         catch (ArgumentException) {
            Console.WriteLine("{0,26}", "Invalid in Base 16");
         }
      }
   }
}
// The example displays the following output:
//    8000000000000000    -->   9,223,372,036,854,775,808
//    0FFFFFFFFFFFFFFF    -->   1,152,921,504,606,846,975
//    F000000000000000    -->  17,293,822,569,102,704,640
//    00A3000000000000    -->      45,880,421,203,836,928
//    D                   -->                          13
//    -13                 -->          Invalid in Base 16
//    9AC61               -->                     633,953
//    GAD                 -->                  Bad Format
//    FFFFFFFFFFFFFFFFF   -->            Numeric Overflow

注解

如果 fromBase 为 16,则可以在 参数指定的 value 数字前面加上“0x”或“0X”。

UInt64由于数据类型仅支持无符号值,因此 该方法ToUInt64(String, Int32)假定 value 使用无符号二进制表示形式表示。 换句话说,所有 64 位都用于表示数值,而符号位不存在。 因此,可以编写代码,将数据类型范围 UInt64 外有符号的长整型值转换为 UInt64 值,而方法不会引发异常。 下面的示例将 转换为 MinValue 其十六进制字符串表示形式,然后调用 ToUInt64(String, Int32) 方法。 方法不引发异常,而是显示消息“0x8000000000000000转换为9223372036854775808。

// Create a hexadecimal value out of range of the UInt64 type.
string value = Convert.ToString(Int64.MinValue, 16);
// Convert it back to a number.
try
{
   UInt64 number = Convert.ToUInt64(value, 16);
   Console.WriteLine("0x{0} converts to {1}.", value, number);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to an unsigned long integer.",
                     value);
}

执行二进制运算或数值转换时,开发人员始终负责验证方法或运算符是否使用适当的数值表示形式来解释特定值。 下面的示例演示了一种技术,用于确保方法不会不当使用二进制表示形式来解释在将十六进制字符串转换为值时使用二进制补 UInt64 补表示形式的值。 该示例确定值在将该值转换为其字符串表示形式时是表示有符号整数还是无符号整数。 当示例将值转换为值时 UInt64 ,它会检查原始值是否为带符号整数。 如果是这样,并且其高阶位设置为 (指示原始值为负) ,该方法将引发异常。

// Create a negative hexadecimal value out of range of the UInt64 type.
long sourceNumber = Int64.MinValue;
bool isSigned = Math.Sign((long)sourceNumber.GetType().GetField("MinValue").GetValue(null)) == -1;
string value = Convert.ToString(sourceNumber, 16);
UInt64 targetNumber;
try
{
   targetNumber = Convert.ToUInt64(value, 16);
   if (isSigned && ((targetNumber & 0x8000000000000000) != 0))
      throw new OverflowException();
   else
      Console.WriteLine("0x{0} converts to {1}.", value, targetNumber);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to an unsigned long integer.",
                     value);
}
// Displays the following to the console:
//    Unable to convert '0x8000000000000000' to an unsigned long integer.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(UInt64)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

返回指定的 64 位无符号整数;不执行任何实际的转换。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (ulong value);

参数

value
UInt64

要返回的 64 位无符号整数。

返回

不经更改即返回 value

属性

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(SByte)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的 8 位有符号整数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (sbyte value);

参数

value
SByte

要转换的 8 位带符号整数。

返回

一个与 value 等效的 64 位无符号整数。

属性

例外

value 小于零。

示例

以下示例尝试将有符号字节数组中的每个元素转换为无符号长整数。

sbyte[] numbers = { SByte.MinValue, -1, 0, 10, SByte.MaxValue };
ulong result;

foreach (sbyte number in numbers)
{
   try {
      result = Convert.ToUInt64(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the UInt64 type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    The SByte value -128 is outside the range of the UInt64 type.
//    The SByte value -1 is outside the range of the UInt64 type.
//    Converted the SByte value 0 to the UInt64 value 0.
//    Converted the SByte value 10 to the UInt64 value 10.
//    Converted the SByte value 127 to the UInt64 value 127.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Int16)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的 16 位有符号整数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (short value);

参数

value
Int16

要转换的 16 位带符号整数。

返回

一个与 value 等效的 64 位无符号整数。

属性

例外

value 小于零。

示例

以下示例尝试将 16 位整数数组中的每个元素转换为无符号长整数。

short[] numbers= { Int16.MinValue, -1, 0, 121, 340, Int16.MaxValue };
ulong result;

foreach (short number in numbers)
{
   try {
      result = Convert.ToUInt64(number);
      Console.WriteLine("Converted the {0} value {1} to a {2} value {3}.",
                           number.GetType().Name, number,
                           result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the UInt64 type.", number);
   }
}
// The example displays the following output:
//    -32768 is outside the range of the UInt64 type.
//    -1 is outside the range of the UInt64 type.
//    Converted the Int16 value 0 to a UInt64 value 0.
//    Converted the Int16 value 121 to a UInt64 value 121.
//    Converted the Int16 value 340 to a UInt64 value 340.
//    Converted the Int16 value 32767 to a UInt64 value 32767.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Int64)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的 64 位有符号整数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (long value);

参数

value
Int64

要转换的 64 位带符号整数。

返回

一个与 value 等效的 64 位无符号整数。

属性

例外

value 小于零。

示例

以下示例尝试将长整数数组中的每个元素转换为无符号长整数。

long[] numbers = { Int64.MinValue, -19432, -18, 0, 121, 340, Int64.MaxValue };
ulong result;
foreach (long number in numbers)
{
   try {
      result = Convert.ToUInt64(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the UInt64 type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    The Int64 value -9223372036854775808 is outside the range of the UInt64 type.
//    The Int64 value -19432 is outside the range of the UInt64 type.
//    The Int64 value -18 is outside the range of the UInt64 type.
//    Converted the Int64 value 0 to the UInt64 value 0.
//    Converted the Int64 value 121 to the UInt64 value 121.
//    Converted the Int64 value 340 to the UInt64 value 340.
//    Converted the Int64 value 9223372036854775807 to a UInt64 value 9223372036854775807.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Int32)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的 32 位有符号整数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (int value);

参数

value
Int32

要转换的 32 位带符号整数。

返回

一个与 value 等效的 64 位无符号整数。

属性

例外

value 小于零。

示例

以下示例尝试将整数数组中的每个元素转换为无符号长整数。

int[] numbers = { Int32.MinValue, -1, 0, 121, 340, Int32.MaxValue };
ulong result;

foreach (int number in numbers)
{
   try {
      result = Convert.ToUInt64(number);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        number.GetType().Name, number,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the UInt64 type.",
                        number.GetType().Name, number);
   }
}
// The example displays the following output:
//    The Int32 value -2147483648 is outside the range of the UInt64 type.
//    The Int32 value -1 is outside the range of the UInt64 type.
//    Converted the Int32 value 0 to the UInt64 value 0.
//    Converted the Int32 value 121 to the UInt64 value 121.
//    Converted the Int32 value 340 to the UInt64 value 340.
//    Converted the Int32 value 2147483647 to the UInt64 value 2147483647.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Double)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的双精度浮点数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (double value);

参数

value
Double

要转换的双精度浮点数。

返回

value,舍入为最接近的 64 位无符号整数。 如果 value 为两个整数中间的数字,则返回二者中的偶数;即 4.5 转换为 4,而 5.5 转换为 6。

属性

例外

value 小于零或大于 UInt64.MaxValue

示例

以下示例尝试将值数组 Double 中的每个元素转换为无符号长整数。

double[] values= { Double.MinValue, -1.38e10, -1023.299, -12.98,
                   0, 9.113e-16, 103.919, 17834.191, Double.MaxValue };
ulong result;

foreach (double value in values)
{
   try {
      result = Convert.ToUInt64(value);
      Console.WriteLine("Converted the {0} value '{1}' to the {2} value {3}.",
                        value.GetType().Name, value,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the UInt64 type.", value);
   }
}
// The example displays the following output:
//    -1.79769313486232E+308 is outside the range of the UInt64 type.
//    -13800000000 is outside the range of the UInt64 type.
//    -1023.299 is outside the range of the UInt64 type.
//    -12.98 is outside the range of the UInt64 type.
//    Converted the Double value '0' to the UInt64 value 0.
//    Converted the Double value '9.113E-16' to the UInt64 value 0.
//    Converted the Double value '103.919' to the UInt64 value 104.
//    Converted the Double value '17834.191' to the UInt64 value 17834.
//    1.79769313486232E+308 is outside the range of the UInt64 type.

另请参阅

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Decimal)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的十进制数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (decimal value);

参数

value
Decimal

要转换的十进制数。

返回

value,舍入为最接近的 64 位无符号整数。 如果 value 为两个整数中间的数字,则返回二者中的偶数;即 4.5 转换为 4,而 5.5 转换为 6。

属性

例外

value 小于零或大于 UInt64.MaxValue

示例

以下示例尝试将值数组 Decimal 中的每个元素转换为无符号长整数。

decimal[] values= { Decimal.MinValue, -1034.23m, -12m, 0m, 147m,
                    199.55m, 9214.16m, Decimal.MaxValue };
ulong result;

foreach (decimal value in values)
{
   try {
      result = Convert.ToUInt64(value);
      Console.WriteLine("Converted the {0} value '{1}' to the {2} value {3}.",
                        value.GetType().Name, value,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the UInt64 type.",
                        value);
   }
}
// The example displays the following output:
//    -79228162514264337593543950335 is outside the range of the UInt64 type.
//    -1034.23 is outside the range of the UInt64 type.
//    -12 is outside the range of the UInt64 type.
//    Converted the Decimal value '0' to the UInt64 value 0.
//    Converted the Decimal value '147' to the UInt64 value 147.
//    Converted the Decimal value '199.55' to the UInt64 value 200.
//    Converted the Decimal value '9214.16' to the UInt64 value 9214.
//    79228162514264337593543950335 is outside the range of the UInt64 type.

另请参阅

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(DateTime)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

调用此方法始终引发 InvalidCastException

[System.CLSCompliant(false)]
public static ulong ToUInt64 (DateTime value);

参数

value
DateTime

要转换的日期和时间值。

返回

不支持此转换。 不返回任何值。

属性

例外

不支持此转换。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

ToUInt64(Char)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定 Unicode 字符的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (char value);

参数

value
Char

要转换的 Unicode 字符。

返回

一个与 value 等效的 64 位无符号整数。

属性

示例

以下示例将字符数组中的每个元素转换为无符号长整数。

char[] chars = { 'a', 'z', '\u0007', '\u03FF',
                 '\u7FFF', '\uFFFE' };
ulong result;

foreach (char ch in chars)
{
   result = Convert.ToUInt64(ch);
   Console.WriteLine("Converted the {0} value '{1}' to the {2} value {3}.",
                     ch.GetType().Name, ch,
                     result.GetType().Name, result);
}
// The example displays the following output:
//    Converted the Char value 'a' to the UInt64 value 97.
//    Converted the Char value 'z' to the UInt64 value 122.
//    Converted the Char value '' to the UInt64 value 7.
//    Converted the Char value '?' to the UInt64 value 1023.
//    Converted the Char value '?' to the UInt64 value 32767.
//    Converted the Char value '?' to the UInt64 value 65534.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Byte)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的 8 位无符号整数的值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (byte value);

参数

value
Byte

要转换的 8 位无符号整数。

返回

一个与 value 等效的 64 位带符号整数。

属性

示例

以下示例将字节数组中的每个元素转换为无符号长整数。

byte[] bytes = { Byte.MinValue, 14, 122, Byte.MaxValue};
ulong result;

foreach (byte byteValue in bytes)
{
   result = Convert.ToUInt64(byteValue);
   Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                     byteValue.GetType().Name, byteValue,
                     result.GetType().Name, result);
}
// The example displays the following output:
//    Converted the Byte value 0 to the UInt64 value 0.
//    Converted the Byte value 14 to the UInt64 value 14.
//    Converted the Byte value 122 to the UInt64 value 122.
//    Converted the Byte value 255 to the UInt64 value 255.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Boolean)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定的布尔值转换为等效的 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (bool value);

参数

value
Boolean

要转换的布尔值。

返回

如果 valuetrue,则为数字 1;否则,为 0。

属性

示例

以下示例将布尔 true 值 和 false 值转换为无符号长整数。

bool falseFlag = false;
bool trueFlag = true;

Console.WriteLine("{0} converts to {1}.", falseFlag,
                  Convert.ToUInt64(falseFlag));
Console.WriteLine("{0} converts to {1}.", trueFlag,
                  Convert.ToUInt64(trueFlag));
// The example displays the following output:
//       False converts to 0.
//       True converts to 1.

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

ToUInt64(Object)

Source:
Convert.cs
Source:
Convert.cs
Source:
Convert.cs

重要

此 API 不符合 CLS。

将指定对象的值转换为 64 位无符号整数。

[System.CLSCompliant(false)]
public static ulong ToUInt64 (object value);
[System.CLSCompliant(false)]
public static ulong ToUInt64 (object? value);

参数

value
Object

用于实现 IConvertible 接口的对象,或为 null

返回

一个与 value 等效的 64 位无符号整数,如果 valuenull,则为零。

属性

例外

value 的格式不正确。

value 不实现 IConvertible 接口。

不支持该转换。

示例

以下示例尝试将对象数组中的每个元素转换为无符号长整数。

object[] values = { true, -12, 163, 935, 'x', new DateTime(2009, 5, 12),
                    "104", "103.0", "-1",
                    "1.00e2", "One", 1.00e2, 16.3e42};
ulong result;

foreach (object value in values)
{
   try {
      result = Convert.ToUInt64(value);
      Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                        value.GetType().Name, value,
                        result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("The {0} value {1} is outside the range of the UInt64 type.",
                        value.GetType().Name, value);
   }
   catch (FormatException) {
      Console.WriteLine("The {0} value {1} is not in a recognizable format.",
                        value.GetType().Name, value);
   }
   catch (InvalidCastException) {
      Console.WriteLine("No conversion to a UInt64 exists for the {0} value {1}.",
                        value.GetType().Name, value);
   }
}
// The example displays the following output:
//    Converted the Boolean value True to the UInt64 value 1.
//    The Int32 value -12 is outside the range of the UInt64 type.
//    Converted the Int32 value 163 to the UInt64 value 163.
//    Converted the Int32 value 935 to the UInt64 value 935.
//    Converted the Char value x to the UInt64 value 120.
//    No conversion to a UInt64 exists for the DateTime value 5/12/2009 12:00:00 AM.
//    Converted the String value 104 to the UInt64 value 104.
//    The String value 103.0 is not in a recognizable format.
//    The String value -1 is outside the range of the UInt64 type.
//    The String value 1.00e2 is not in a recognizable format.
//    The String value One is not in a recognizable format.
//    Converted the Double value 100 to the UInt64 value 100.
//    The Double value 1.63E+43 is outside the range of the UInt64 type.

注解

返回值是调用 IConvertible.ToUInt64 的基础类型的 value方法的结果。

适用于

.NET 9 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0