一些我想要一個大數目(例如:9407524828459565063)轉換:在C#中爲十六進制(828E3DFD00000000前)。C#轉換比大的Int64爲十六進制
的問題是,數量比的Int64的最大值大。
我擡起頭無處不在,無法找到一個可行的解決方案。
任何幫助在這裏?
謝謝。
一些我想要一個大數目(例如:9407524828459565063)轉換:在C#中爲十六進制(828E3DFD00000000前)。C#轉換比大的Int64爲十六進制
的問題是,數量比的Int64的最大值大。
我擡起頭無處不在,無法找到一個可行的解決方案。
任何幫助在這裏?
謝謝。
我會用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");
...等等。
的BigInteger是在.NET 4.0中引入的,所以如果你可以使用它,那麼你可以轉換形式[BigInteger到Hexadeximal(http://stackoverflow.com/questions/4988858/biginteger-to-hexadeximal) – 2012-04-18 19:11:52
我發現'BigInteger.ToString (「X」)有時會增加一個前導零。我已經創建了擴展方法來轉換爲十六進制,二進制和八進制(請參閱:http://stackoverflow.com/questions/14048476/#15447131),它不包含任何前導零。 – 2013-03-16 08:30:17
如果您使用的是.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");
也許:
BigInteger b = 9407524828459565063;
var hex = b.ToString("X2");
或者
ulong l = 9407524828459565063;
var hex = l.ToString("X2");
你使用的是.Net 4.0嗎? – 2012-04-18 19:10:36
如果它大於int64,你怎麼接收它?文本? – GalacticCowboy 2012-04-18 19:11:20