1. 程式人生 > 實用技巧 >C#整數文字以及不同進位制之間的轉換

C#整數文字以及不同進位制之間的轉換

// 方式1,無法進行自動補0
string data1 = Convert.ToString(17194, 16); // 432A
string data2 = Convert.ToString(0, 16); // 0
 
// 方式2,自動補0
string data3 = 17194.ToString("X4"); // 432A
string data4 = 0.ToString("X2"); // 00
string data5 = 0.ToString("X4"); // 0000

X:代表16進位制

4:代表每次的資料位數,當位數不足時自動補0

C#整數文字

整數文字可以是

  • 十進位制:不使用任何字首
  • 十六進位制:使用0x0X
    字首
  • 二進位制:使用0b0B字首(在 C# 7.0 和更高版本中可用)

下面的程式碼演示每種型別的示例:

var decimalLiteral = 42;
var hexLiteral = 0x2A;
var binaryLiteral = 0b_0010_1010;

前面的示例還演示瞭如何將_用作數字分隔符 (從 C# 7.0 開始提供支援)。可以將數字分隔符用於所有型別的數字文字。

整數文字的型別由其後綴確定,如下所示:

  • 如果文字沒有後綴,則其型別為以下型別中可表示其值的第一個型別:intuintlongulong

  • 如果文字以Uu為字尾,則其型別為以下型別中可表示其值的第一個型別:uint

    ulong

  • 如果文字以Ll為字尾,則其型別為以下型別中可表示其值的第一個型別:longulong

string 和 char 型別

string類的例項表示一些文字。string在邏輯上是一個 16 位值的序列,其中每個值都是char結構的例項。string.Length屬性返回string例項中char例項的數目。

下面的示例函式以十六進位制表示法列印string中所有char例項的值:

void PrintChars(string s)
{
    Console.WriteLine($"\"{s}\".Length = {s.Length}");
    for (int
i = 0; i < s.Length; i++) { Console.WriteLine($"s[{i}] = '{s[i]}' ('\\u{(int)s[i]:x4}')"); } Console.WriteLine(); }

將 string "Hello" 傳遞給此函式,將獲得以下輸出:

PrintChars("Hello");
"Hello".Length = 5
s[0] = 'H' ('\u0048')
s[1] = 'e' ('\u0065')
s[2] = 'l' ('\u006c')
s[3] = 'l' ('\u006c')
s[4] = 'o' ('\u006f')