簡體   English   中英

在.NET 3.5中將類型十進制轉換為十六進制(字符串)

[英]Convert Type Decimal to Hex (string) in .NET 3.5

我試圖將十進制轉換為十六進制作為字符串。 我已經全神貫注地找到了解決方案,但我能找到的只有Int或者長到十六進制。 使用下面的代碼時,我收到“格式說明符無效”錯誤。

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

我還研究過將十進制轉換為字節數組,然后轉換為十六進制,但我也很簡單。

既然你使用的是.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");

當然,這會忽略任何非整數的部分。

由於您使用的是.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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM