C# 传递十六进制字符串时long.TryParse失败

C# 传递十六进制字符串时long.TryParse失败,c#,C#,我是C#新手,这个测试用例总是失败。 l_sID的值为5509df4d0d557e15aca17902。它是一个十六进制值,我正在尝试将它与long匹配。我知道它会失败,但我该怎么做才能通过这个测试呢 我尝试使用BigInteger,但它显示错误 找不到类型或命名空间名称“BigInteger”(当我执行BigInteger l\u lID=0时,是否缺少using指令或程序集引用;而不是长l\u lID=0 5509df4d0d557e15aca17902 此十六进制值为24位,太大,无法解析

我是C#新手,这个测试用例总是失败。 l_sID的值为5509df4d0d557e15aca17902。它是一个十六进制值,我正在尝试将它与long匹配。我知道它会失败,但我该怎么做才能通过这个测试呢

我尝试使用BigInteger,但它显示错误


找不到类型或命名空间名称“BigInteger”(当我执行BigInteger l\u lID=0时,是否缺少using指令或程序集引用;而不是长l\u lID=0

5509df4d0d557e15aca17902

此十六进制值为24位,太大,无法解析为64位整数

供参考:

  • 最大字节0xFF(2位)
  • 最大UInt16 0xFFFF(4位)
  • 最大UInt32 0xFFFFFFFF(8位)
  • 最大UInt64 0xFFFFFFFFFFFFFF(16位)
我知道它会失败,但我该怎么做才能通过这个测试呢

如果不更改目标数据类型或输入值,您将无能为力

如果使用较小的十六进制数,则需要使用允许指定数字样式的

bool result = Int64.TryParse(stringToConvert, NumberStyles.HexNumber,
                             CultureInfo.InvariantCulture, out number);
我尝试使用BigInteger,但它显示错误

如果您愿意,BigInteger在.NET4.0及更高版本中应该可以正常工作


找不到类型或命名空间名称“BigInteger”(当我执行BigInteger l\u lID=0而不是长l\u lID=0时,是否缺少using指令或程序集引用


您需要添加对System.Runtime.Numerics(在System.Runtime.Numerics.dll中)的程序集引用并使用System.Numerics;将
添加到C#文件的顶部。

字母数字序列不能使用long…您签出MSDN了吗?啊,谢谢。肯定是新的内容。我无法更改目标数据类型,但可以更改输入值。我尝试使用bigint而不是long。但它显示错误。如果指定适当的NumberStyles。请参阅更新的答案。找不到类型或命名空间名称“BigInteger”(当我执行BigInteger l_lID=0时,您是否缺少using指令或程序集引用;而不是long l_lID=0;更新了我的答案以向您展示如何解决错误。另外,请注意,
System.Numerics.BigInteger
仅存在于.Net 4.0及更高版本中。
bool result = Int64.TryParse(stringToConvert, NumberStyles.HexNumber,
                             CultureInfo.InvariantCulture, out number);
bool result = BigInteger.TryParse(hexString,
                             NumberStyles.AllowHexSpecifier,
                             null, out number))