2012-04-18 99 views
3

一些我想要一个大数目(例如:9407524828459565063)转换:在C#中为十六进制(828E3DFD00000000前)。C#转换比大的Int64为十六进制

的问题是,数量比的Int64的最大值大。

我抬起头无处不在,无法找到一个可行的解决方案。

任何帮助在这里?

谢谢。

+0

你使用的是.Net 4.0吗? – 2012-04-18 19:10:36

+1

如果它大于int64,你怎么接收它?文本? – GalacticCowboy 2012-04-18 19:11:20

回答

7

我会用System.Numerics.BigInteger类来做到这一点。确切的解决方案取决于你有这个数字的格式:string,double,other。

如果字符串(s):

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

如果双(d):

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

...等等。

+1

的BigInteger是在.NET 4.0中引入的,所以如果你可以使用它,那么你可以转换形式[BigInteger到Hexadeximal(http://stackoverflow.com/questions/4988858/biginteger-to-hexadeximal) – 2012-04-18 19:11:52

+0

我发现'BigInteger.ToString (“X”)有时会增加一个前导零。我已经创建了扩展方法来转换为十六进制,二进制和八进制(请参阅:http://stackoverflow.com/questions/14048476/#15447131),它不包含任何前导零。 – 2013-03-16 08:30:17

2

也许:

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

或者

ulong l = 9407524828459565063; 
var hex = l.ToString("X2"); 
相关问题