我在 C# 中有一个这样的字符串:
string only_number;
我给它赋值=40
当我检查时only_number[0]
,我得到52
当我检查时only_number[1]
,我得到48
为什么将 48 添加到当前位置的字符?请建议
我在 C# 中有一个这样的字符串:
string only_number;
我给它赋值=40
当我检查时only_number[0]
,我得到52
当我检查时only_number[1]
,我得到48
为什么将 48 添加到当前位置的字符?请建议
字符串基本上是char[]
. 所以你看到的是字符 4 和 0 的 ASCII 值。
证明: 4 和 0 之间的差异 = 52 和 48 之间的差异。
因为它是一个字符串,所以你没有分配它 40。而是你分配了它"40"
。
你看到的是 '4' 和 '0' 的 ASCII 码。
这不是为角色添加 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
您正在访问此字符串,它正在为您的两个字符“4”和“0”中的每一个输出 ASCII 字符代码 - 请参见此处:
http://www.theasciicode.com.ar/ascii-control-characters/null-character-ascii-code-0.html
string
是的array
,chars
所以,这就是你收到这些结果的原因,它基本上显示ASCII
'4'和'0'。