2

Decimal を文字列として Hex に変換しようとしています。私はこれに対する解決策を探しましたが、見つけることができるのは Int または long to Hex だけです。以下のコードを使用すると、「フォーマット指定子が無効です」というエラーが表示されます。

    Decimal decValue = 18446744073709551615
    string hexValue = decValue.ToString("X");

また、10進数をバイト配列に変換してから16進数に変換することも検討しましたが、それについても不足しています。

4

2 に答える 2

6

.NET 3.5 を使用しているので、.NET 2.0+ で動作するIntXはどうですか?

var intx = new Oyster.Math.IntX(decValue.ToString());
intx.ToString(16);

.NET 4.0 以降で使用する場合System.Numerics(忘れずに を含めてくださいSystem.Numerics.dll)

Decimal decValue = 18446744073709551615;
var bigValue = new BigInteger(decValue);
bigValue.ToString("X");

もちろん、これは整数以外の部分を無視します。

于 2012-04-30T20:05:55.380 に答える
2

.NET 3.5 を使用しているため、手動で行う必要があります。拡張メソッドでうまくまとめることができます:

public static class DecimalHelper {
public static string ToHexString( this Decimal dec ) {
    var sb = new StringBuilder();
    while( dec > 1 ) {
        var r = dec % 16;
        dec /= 16;
        sb.Insert( 0, ((int)r).ToString( "X" ) );
    }
    return sb.ToString();
    }
}

次に、次のように呼び出します。

Decimal dec = 18446744073709551615;
var hex = dec.ToHexString();
于 2012-04-30T21:04:55.833 に答える