从将 char 转换为整数获取不同的值

Getting different values from convert char to integer

当我显示 'i' 变量时,它是一个字符值

{
  class Program {
    static void Main(string[] args) {
      var max = 0;
      var lista = new char[] {
        '1',
        '2',
        '3',
        '4'
      };
      foreach(char i in lista) {
        Console.WriteLine(i);
        /* var hola =  Convert.ToInt32(i);
          Console.WriteLine(hola);*/
      }
    }
  }
}

我明白了:

> 1 2 3 4

但是,当将 'i' 转换为 int

var max = 0;
var lista = new char[] {
  '1',
  '2',
  '3',
  '4'
};
foreach(char i in lista) {
  var hola = Convert.ToInt32(i);
  Console.WriteLine(hola);
}    
            

我明白了:

49 50 51 52

知道可能是什么问题吗?我想获得相同的值,所以我可以将它们作为整数求值并获得其中的最大值,但我不能。

当您将 char 转换为 int 时,您将获得该字符的 ASCII 值。这些值的巧妙之处在于它们是连续的,因此如果您减去 '0' 的值(第 0 个 字符 ),您可以将表示数字的字符转换为数字:

var hola =  i - '0';

如果你想要文字字符而不是字符的ascii码,使用ToString()方法

var hola =  Convert.ToInt32(i.ToString());

WriteLine 方法在内部转换参数字符串。这样你就可以拥有你想要的价值。 ToInt 方法 return 该字符的 ASCII 值。您必须将 i 值转换为字符串 i.ToString() 或者您可以简单地从转换后的值中减去 48。