【问题标题】:Why does Convert.ToInt32('1') returns 49? [duplicate]为什么 Convert.ToInt32('1') 返回 49? [复制]
【发布时间】:2010-09-08 08:44:41
【问题描述】:

可能重复:
c# convert char to int

这行得通:

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

但这不是:

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

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    它正在返回字符 1 的 ASCII 值

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-01-01
              • 2013-12-22
              • 1970-01-01
              • 2018-02-24
              • 2015-01-16
              • 2021-12-22
              • 1970-01-01
              相关资源
              最近更新 更多