一些我想要一个大数目(例如: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