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");
Другие вопросы по тегам