首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 進制轉換速查:Convert.ToString/ToInt32 完整用法與位元運算補充

     編輯:關於C語言

內建轉換方法:Convert 類別雙向支援

十進制 → 其他進制 (Convert.ToString(value, toBase))


int dec = 166;
Console.WriteLine($"二進制: {Convert.ToString(dec, 2)}");   // 10100110
Console.WriteLine($"八進制: {Convert.ToString(dec, 8)}");   // 246
Console.WriteLine($"十六進制: {Convert.ToString(dec, 16)}"); // A6
// 支援基數: 2, 8, 10, 16

其他進制 → 十進制 (Convert.ToInt32(string, fromBase))


Console.WriteLine($"二進制 111101 → {Convert.ToInt32("111101", 2)}");   // 61
Console.WriteLine($"八進制 44 → {Convert.ToInt32("44", 8)}");           // 36
Console.WriteLine($"十六進制 CC → {Convert.ToInt32("CC", 16)}");         // 204
// 同樣支援基數 2, 8, 10, 16

進階格式化:ToString("X")、ToString("X8")


int val = 255;
val.ToString("X");     // "FF" (大寫十六進制)
val.ToString("x");     // "ff" (小寫)
val.ToString("X4");    // "00FF" (補零至 4 位)
val.ToString("X8");    // "000000FF"

位元運算補充:手動實作轉換邏輯


// 十進制轉二進制字串 (不使用 Convert)
public static string ToBinary(int value, int bits = 32)
{
    char[] buffer = new char[bits];
    for (int i = bits - 1; i >= 0; i--)
    {
        buffer[i] = (value & 1) == 1 ? '1' : '0';
        value >>= 1;
    }
    return new string(buffer).TrimStart('0'); // 移除前導零
}

// 十六進制字串轉位元陣列
public static byte[] HexToBytes(string hex)
{
    hex = hex.Replace(" ", "").Replace("-", "");
    byte[] bytes = new byte[hex.Length / 2];
    for (int i = 0; i < bytes.Length; i++)
        bytes[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
    return bytes;
}

// 位元陣列轉十六進制字串
public static string BytesToHex(byte[] bytes) 
    => BitConverter.ToString(bytes).Replace("-", "");

常用進制常數前綴

  • 0b1010 (C# 7.0+ 二進制字面值)
  • 0123 (C# 不支援八進制字面值,需用 Convert.ToInt32("123", 8))
  • 0xFF / 0Xff (十六進制字面值)

位元旗標操作實用模式


[Flags]
enum Permissions { None = 0, Read = 1, Write = 2, Execute = 4, Admin = 8 }

var p = Permissions.Read | Permissions.Write; // 合併旗標 (3)
bool canRead = (p & Permissions.Read) != 0;   // 檢查旗標
p |= Permissions.Execute;                     // 新增旗標
p &= ~Permissions.Write;                      // 移除旗標
p ^= Permissions.Admin;                       // 切換旗標
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved