1. 程式人生 > 程式設計 >C# 進位制轉換的實現(二進位制、十六進位制、十進位制互轉)

C# 進位制轉換的實現(二進位制、十六進位制、十進位制互轉)

由於二進位制數在C#中無法直接表示,所以所有二進位制數都用一個字串來表示
例如: 二進位制: 1010 表示為 字串:"1010"
int d = 10;

//十進位制轉二進位制字串
 Console.WriteLine(Convert.ToString(d,2));
//輸出: 1010

//十進位制轉十六進位制字串
Console.WriteLine(Convert.ToString(d,16));
//輸出: a


//二進位制字串轉十進位制數
string bin = "1010";
Console.WriteLine(Convert.ToInt32(bin,2));
//輸出: 10


//二進位制字串轉十六進位制數
string bin = "1010";
Console.WriteLine(string.Format("{0:x}",Convert.ToInt32(bin,2));
//輸出: a


//十六進位制轉二進位制字串
Console.WriteLine(Convert.ToString(0xa,2));
//輸出: 1010


//十六進位制轉十進位制數
Console.WriteLine(Convert.ToString(0xa,10));
//輸出: 10

C#實現轉換十六進位制

C#語言有很多值得學習的地方,這裡我們主要介紹C#實現轉換十六進位制,包括介紹用來表示十六進位制的列舉值是 HexNumber等方面。

任何資料在計算機內部都是以二進位制儲存的,所以進位制與資料的儲存無關,只與輸入輸出有關。所以,對於進位制轉換,我們只關心字串中的結果。

在上面的第 4 條中提到了 ToString() 方法可以將數值轉換成字串,不過在字串中,結果是以十進位制顯示的。現在我們帶給它加一些引數,就可以讓C#實現轉換成十六進位制——使用 ToString(string) 方法。

這裡需要一個 string 型別的引數,這就是格式說明符。十六進位制的格式說明符是 "x" 或者 "X",使用這兩種格式說明符的區別主要在於 A-F 六個數字:"x" 代表 a-f 使用小寫字母表示,而 "X" 而表示 A-F 使用大字字母表示。如下例:

  private void TestHex() { 
  int a = 188; 
  thistextBoxText = ""; 
  thistextBoxAppendText("a(10) = " + aToString() + "\n"); 
  thistextBoxAppendText("a(16) = " + aToString("x") + "\n"); 
  thistextBoxAppendText("a(16) = " + aToString("X") + "\n"); 
  } 

執行結果如下:

a(10) = 188
a(16) = bc
a(16) = BC

這時候,我們可能有另一種需求,即為了顯示結果的整齊,我們需要控制十六進位制表示的長度,如果長度不夠,用前導的 0 填補。解決這個問題,我們只需要在格式說明符“x”或者“X”後寫上表示長度的數字就行了。比如,要限制在 4 個字元的長度,可以寫成“X4”。在上例中追加一句:

 this.textBox1.AppendText("a(16) = " + a.ToString("X4") + "\n"); 

其結果將輸出 a(16) = 00BC。

現在,我們還要說一說如何將一個表示十六進位制數的字串轉換成整型。這一轉換,同樣需要藉助於 Parse() 方法。這裡,我需要 Parse(string,System.Globalization.NumberStyles) 方法。第一個引數是表示十六進位制數的字串,如“AB”、“20”(表示十進位制的 32) 等。第二個引數 System.Globalization.NumberStyles 是一個列舉型別,用來表示十六進位制的列舉值是 HexNumber。因此,如果我們要將“AB”轉換成整型,就應該這樣寫:int b = int.Parse("AB",System.Globalization.NumberStyles.HexNumber),最後得到的 b 的值是 171。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。