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 开始提供支持)。 可以将数字分隔符用于所有类型的数字文本。

整数文本的类型由其后缀确定,如下所示:

  • 如果文本没有后缀,则其类型为以下类型中可表示其值的第一个类型:intuintlongulong

  • 如果文本以 U 或 u 为后缀,则其类型为以下类型中可表示其值的第一个类型:uintulong

  • 如果文本以 L 或 l 为后缀,则其类型为以下类型中可表示其值的第一个类型: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')

 

posted on 2020-08-27 20:59  静以修身俭以养德  阅读(359)  评论(0编辑  收藏  举报

导航