2

我在 C# 中有一个这样的字符串:

string only_number;

我给它赋值=40

当我检查时only_number[0],我得到52
当我检查时only_number[1],我得到48

为什么将 48 添加到当前位置的字符?请建议

4

5 回答 5

8

字符串基本上是char[]. 所以你看到的是字符 4 和 0 的 ASCII 值。

证明: 4 和 0 之间的差异 = 52 和 48 之间的差异。

因为它是一个字符串,所以你没有分配它 40。而是你分配了它"40"

于 2012-05-30T11:11:09.007 回答
4

你看到的是 '4' 和 '0' 的 ASCII 码。

于 2012-05-30T11:11:43.477 回答
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
于 2012-05-30T11:22:27.957 回答
2

您正在访问此字符串,它正在为您的两个字符“4”和“0”中的每一个输出 ASCII 字符代码 - 请参见此处:

http://www.theasciicode.com.ar/ascii-control-characters/null-character-ascii-code-0.html

于 2012-05-30T11:11:47.640 回答
1

string是的arraychars所以,这就是你收到这些结果的原因,它基本上显示ASCII'4'和'0'。

于 2012-05-30T11:13:32.180 回答