2012-04-18 5 views
3

C#で大きな数値(例:9407524828459565063)を16進数(例:828E3DFD00000000)に変換しようとしています。C#Int64より大きい数値をHexaDecimalに変換します

問題は、数値がInt64の最大値よりも大きいことです。

私はどこを見上げても、解決策を見つけることができませんでした。

ここにヘルプがありますか?

ありがとうございます。

+0

を.Net 4.0を使用していますか? –

+1

int64よりも大きければ、どうやって*受け取っていますか?テキスト? – GalacticCowboy

答えて

7

これを行うには、System.Numerics.BigIntegerクラスを使用します。正確な解決方法は、この番号を持つ形式(文字列、倍精度、その他)によって異なります。

文字列(s)の場合:

var bigInt = BigInteger.Parse(s); 
var hexString = bigInt.ToString("x"); 

ダブルIF(d):

var bigInt = new BigInteger(d); 
var hexString = bigInt.ToString("x"); 

...エトセトラ。

+1

BigIntegerは.Net 4.0で導入されていますので、それを使うことができれば[BigIntegerをHexadeximalに変換できます](http://stackoverflow.com/questions/4988858/biginteger-to-hexadeximal) –

+0

BigInteger.ToString ( "X") 'は時に先行ゼロを追加します。先行ゼロを含まない16進数、2進数、8進数に変換する拡張メソッドを作成しました(http://stackoverflow.com/questions/14048476/#15447131参照)。 –

2

BigInteger b = 9407524828459565063; 
var hex = b.ToString("X2"); 

それとも

ulong l = 9407524828459565063; 
var hex = l.ToString("X2"); 
関連する問題