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#整数文本
整数文本可以是
- 十进制:不使用任何前缀
- 十六进制:使用
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 (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')