代码之家  ›  专栏  ›  技术社区  ›  vent

c#为什么返回49:转换为32('1')[副本]

c#
  •  8
  • vent  · 技术社区  · 14 年前


    c# convert char to int

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

    但事实并非如此:

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

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

    5 回复  |  直到 4 年前
        1
  •  17
  •   Sachin Shanbhag    14 年前

    它返回字符1的ASCII值

    第一条语句将参数视为字符串并将值转换为Int,

        2
  •  2
  •   Jürgen Steinblock    14 年前

    正如其他人所说,Convert返回ASCII码。 如果要转换 '1' 1 (int) 你应该使用

    int val = Convert.ToInt32('1'.ToString());
    
        3
  •  2
  •   leppie    14 年前

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

        4
  •  1
  •   Daren Thomas    14 年前

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

        5
  •  1
  •   Nakul Chaudhary    14 年前