4

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

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

我到处查找,找不到有效的解决方案。

这里有什么帮助吗?

谢谢你。

4

3 回答 3

9

我会使用 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");

……等等。

于 2012-04-18T19:10:57.027 回答
3

也许:

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

或者

ulong l = 9407524828459565063;
var hex = l.ToString("X2");
于 2012-04-18T19:12:17.447 回答
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");
于 2012-04-18T19:11:37.680 回答