.NET Framework 提供兩個強大的靜態方法,輕鬆實現任意進制 (2/8/10/16) 字串與數值的雙向轉換:
Convert.ToInt32(string value, int fromBase):將指定進制字串轉為 int 數值。fromBase 僅支援 2、8、10、16。Convert.ToString(int value, int toBase):將 int 數值轉為指定進制字串。toBase 同樣限制為 2、8、10、16。
// 二進制字串 "0010" 轉十進制數值 2
int val = Convert.ToInt32("0010", 2); // 結果: 2
// 十進制 2 轉二進制字串 "10" (注意:不保留前導零)
string bin = Convert.ToString(2, 2); // 結果: "10"
/// <summary>
/// 任意支援進制間字串轉換
/// </summary>
/// <param name="value">原始數值字串</param>
/// <param name="fromBase">源進制 (2/8/10/16)</param>
/// <param name="toBase">目標進制 (2/8/10/16)</param>
/// <returns>目標進制字串</returns>
public string ConvertBase(string value, int fromBase, int toBase)
{
// 1. 統一轉為十進制整數
int intValue = Convert.ToInt32(value, fromBase);
// 2. 再轉為目標進制字串
return Convert.ToString(intValue, toBase);
}
// 使用範例
string hex = ConvertBase("10", 10, 16); // "A"
string oct = ConvertBase("A", 16, 8); // "12"
string bin = ConvertBase("12", 8, 2); // "1010"
Convert.ToString 不補前導零,需自行 PadLeft。
string bin8 = Convert.ToString(5, 2).PadLeft(8, '0'); // "00000101"
Int32 範圍時,使用 Convert.ToInt64 / Convert.ToString(long, int)。System.Convert.ToBase64String。FormatException。| 十進制 | 二進制 | 八進制 | 十六進制 |
|---|---|---|---|
| 10 | 1010 | 12 | A |
| 255 | 11111111 | 377 | FF |
| 1024 | 10000000000 | 2000 | 400 |
掌握這兩個核心方法,配合簡單封裝,即可應對絕大多數進制轉換業務場景,無需引入第三方庫。