static void Main()
{
int a = 612345;
string b = Convert.ToString(a);
char c = Convert.ToChar(b[0]);
int d = Convert.ToInt32(c);
Console.WriteLine(d);
}在做这个操作时,我想得到输出"6",但我得到"54“。使用调试器完成程序时,我看到了这个。

如果数组的零元素是char c,那么54通常取数字为6吗?我怎么才能解决这个问题?
我事先道歉,如果我的问题似乎愚蠢和不正确的人,我是新手编程。(但我明白,从实际的角度来看,所有这些转变都是毫无意义的。这正是更好地理解语言的学习任务)
发布于 2022-06-17 08:13:14
每个字符都有一个代码,一些字符有相应的数字值。
char : code : value
-------------------
'0' : 48 : 0
'6' : 54 : 6
'A' : 65 : -1 (default value when character doesn't have numeric value)
'¾' : 190 : 0.75 (note, that numeric value is a floating point value here) 到目前为止,获得数值的最精确的方法是char.GetNumericValue。
char c = '¾';
double result = char.GetNumericValue(c);但是,在'0' .. '9'范围内,您可以将其放在c - '0'中。
char c = '6';
int result = c - '0';在你的情况下
int d = b[0] - '0';替代方案
int d = (int) char.GetNumericValue(b, 0);发布于 2022-06-17 06:27:05
54是6的ASCII代码,你的问题是因为一个字符和一个小整数并没有那么大的不同。取而代之的是这样做:
int a = 612345;
string b = a.ToString();
int d = Int32.Parse(b[0].ToString());
Console.WriteLine(d);您可以在几乎所有的ToString()上调用C#,这样转换就容易了。使用Int32.Parse将char转换为int,并调用char上的ToString使Parse接受它,因为它不需要char。
编辑以查看char实际上只是一个整数,您实际上可以像下面这样修改原始代码:
int d = Convert.ToInt32(c)-'0';还能拿到6块。
https://stackoverflow.com/questions/72655079
复制相似问题