我在C#中有一个字符串,如下所示:
string only_number;
我为其指定了值= 40
当我检查only_number[0]
时,我得到52
当我检查only_number[1]
时,我得到48
为什么在当前位置为一个角色添加48?请建议
答案 0 :(得分:8)
字符串基本上是char[]
。所以你看到的是char 4和0的ASCII值。
证明:4到0之间的差异= 52到48之间的差异。
因为它是一个字符串所以你没有分配它。相反,你分配了它"40"
。
答案 1 :(得分:4)
您看到的是ASCII代码'4'和'0'。
答案 2 :(得分:3)
它没有为角色添加48。你看到的是字符代码,数字的字符在Unicode中以48开头:
'0' = 48
'1' = 49
'2' = 50
'3' = 51
'4' = 52
'5' = 53
'6' = 54
'7' = 55
'8' = 56
'9' = 57
字符串是一系列char
值,每个char
值是一个16位整数,基本上代表Unicode字符集中的代码点。
当您从only_number[0]
读取时,您获得的char
值为'4'
,其字符代码为52.所以,您所做的就是从中读取一个字符字符串,然后在显示之前将其转换为整数。
所以:
char c = only_number[0];
Console.WriteLine(c); // displays 4
int n = (int)only_number[0]; // cast to integer
Console.WriteLine(n); // displays 52
int m = only_number[0]; // the cast is not needed, but the value is cast anyway
Console.WriteLine(m); // displays 52
答案 3 :(得分:2)
您正在访问此字符串,并且正在为您的两个字符“4”和“0”输出ASCII字符代码 - 请参阅此处:
http://www.theasciicode.com.ar/ascii-control-characters/null-character-ascii-code-0.html
答案 4 :(得分:1)
string
是array
的{{1}},所以,那就是为什么你收到这些结果,它基本上显示{4}和'0'的chars