2012-04-18 98 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"); 
相關問題