C#整數文字以及不同進位制之間的轉換
阿新 • • 發佈:2020-08-27
// 方式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#整數文字
整數文字可以是
- 十進位制:不使用任何字首
- 十六進位制:使用
0x
或0X
- 二進位制:使用
0b
或0B
字首(在 C# 7.0 和更高版本中可用)
下面的程式碼演示每種型別的示例:
var decimalLiteral = 42; var hexLiteral = 0x2A; var binaryLiteral = 0b_0010_1010;
前面的示例還演示瞭如何將_
用作數字分隔符 (從 C# 7.0 開始提供支援)。可以將數字分隔符用於所有型別的數字文字。
整數文字的型別由其後綴確定,如下所示:
-
如果文字沒有後綴,則其型別為以下型別中可表示其值的第一個型別:
int
、uint
、long
、ulong
。 -
如果文字以
U
或u
為字尾,則其型別為以下型別中可表示其值的第一個型別:uint
ulong
。 -
如果文字以
L
或l
為字尾,則其型別為以下型別中可表示其值的第一個型別:long
、ulong
。
string 和 char 型別
string類的例項表示一些文字。string
在邏輯上是一個 16 位值的序列,其中每個值都是char結構的例項。string.Length屬性返回string
例項中char
例項的數目。
下面的示例函式以十六進位制表示法列印string
中所有char
例項的值:
void PrintChars(string s) { Console.WriteLine($"\"{s}\".Length = {s.Length}"); for (inti = 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')