C# Преобразовать число больше, чем Int64 в шестнадцатеричный
Я пытаюсь преобразовать большое число (например, 9407524828459565063) в шестнадцатеричное (например: 828E3DFD00000000) в C#.
Проблема в том, что число больше максимального значения Int64.
я посмотрел везде и не мог найти рабочее решение.
Любая помощь здесь?
Спасибо.
3 ответа
Решение
Я бы использовал класс 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");
... и так далее.
Может быть:
BigInteger b = 9407524828459565063;
var hex = b.ToString("X2");
Или же
ulong l = 9407524828459565063;
var hex = l.ToString("X2");
Если вы используете.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");