C#で大きな数(例:9407524828459565063)を16進数(例:828E3DFD00000000)に変換しようとしています。
問題は、数値が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");
...etcetera。
多分:
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");