c#为什么返回49:Convert.ToInt32('1')

时间:2010-09-08 08:44:41

标签: c#

  

可能重复:
  c# convert char to int

这有效:

int val = Convert.ToInt32("1");

但这不是:

int val = Convert.ToInt32('1'); // returns 49

这不应该转换为实际的int吗?

5 个答案:

答案 0 :(得分:16)

返回字符1的ASCII值

第一个语句将参数视为字符串并将值转换为Int, 第二个将参数视为char并返回其ascii值

答案 1 :(得分:2)

代码'1'(char)49相同(因为字符1的Unicode代码点是49)。 Convert.ToInt32(char)将该字符的代码点返回为int

答案 2 :(得分:2)

正如其他人所说,Convert返回ASCII代码。 如果您想将'1'转换为1 (int),则应使用

int val = Convert.ToInt32('1'.ToString());

答案 3 :(得分:1)

正如其他人已经指出的那样:在您的第二个示例('1')中,您使用的是char字面值。 char是数字类型。没有像字符串示例("1")那样完成解析,因为它已经是一个数字 - 只是一个更广泛的格式(从16位到32位)的转换。

答案 4 :(得分:1)

它将'1'视为char,而任何char的int形式都是其ASCII等价物,因此它返回其ASCII等价物。 但是在“1”的情况下,它将其视为字符串并将其转换为整数。