将32位十六进制数转换为long的问题

时间:2010-12-06 01:06:29

标签: c# hex

我试过

string inpStr = "800000000000000026FFF40000000000";
long num = long.Parse(inpStr, NumberStyles.HexNumber);

并获得错误“Int64的值太大或太小”。如果我使用16位十六进制,它工作正常。如何使用32位十六进制值?

2 个答案:

答案 0 :(得分:4)

32位十六进制数不适合long(64位,因此最多可容纳16位十六进制值)

在.NET 4.0中,您可以使用BigInteger:

const string inpStr = "800000000000000026FFF40000000000";
BigInteger num = 
      BigInteger.Parse(inpStr, System.Globalization.NumberStyles.HexNumber); 

答案 1 :(得分:3)

您的价值太大,无法容纳long

您的32位十六进制数使用 log 2 16 32 = 128位; long仅使用64位。