C#将大于Int64的数字转换为HexaDecimal

时间:2012-04-18 19:07:53

标签: c# .net hex int64

我想在C#中将一个大数字(例如:9407524828459565063)转换为十六进制(例如:828E3DFD00000000)。

问题是该数字大于Int64的最大值。

我到处查找,找不到合适的解决方案。

这里有什么帮助吗?

谢谢。

3 个答案:

答案 0 :(得分:8)

我会使用System.Numerics.BigInteger类来执行此操作。确切的解决方案取决于您具有此数字的格式:字符串,双精度,其他。

如果字符串(s):

var bigInt = BigInteger.Parse(s);
var hexString = bigInt.ToString("x");

如果加倍(d):

var bigInt = new BigInteger(d);
var hexString = bigInt.ToString("x");

...等等。

答案 1 :(得分:3)

也许:

BigInteger b = 9407524828459565063;
var hex = b.ToString("X2");

ulong l = 9407524828459565063;
var hex = l.ToString("X2");

答案 2 :(得分:2)

如果您使用的是.NET 4.0,则可以查看BigInteger类:

http://msdn.microsoft.com/en-us/library/system.numerics.biginteger.aspx

  BigInteger bi = new BigInteger();
  bi = 9407524828459565063;
  string bix = bi.ToString("X");