C# 我们是否需要每次用48减去Convert.ToInt32(o)?什么时候需要减号,什么时候不需要?

C# 我们是否需要每次用48减去Convert.ToInt32(o)?什么时候需要减号,什么时候不需要?,c#,ascii,C#,Ascii,通过上面的代码,我得到了正确的整数值,我能够对这个数字进行运算,得到正确的结果 但使用下面的代码,为什么Convert.ToInt32(o)方法不将其转换为整数值。为什么我们要用48减去 int num = Convert.ToInt32(Console.ReadLine()); 如果我不是用48减去,我就得不到正确的整数值 有人能解释一下为什么会这样吗?是否每次都需要这样做?因为在别的地方我没有减去48就计算了结果,得到了正确的结果 我正在做一个程序来打印一个数字中出现的次数。 这是我的密码

通过上面的代码,我得到了正确的整数值,我能够对这个数字进行运算,得到正确的结果

但使用下面的代码,为什么Convert.ToInt32(o)方法不将其转换为整数值。为什么我们要用48减去

int num = Convert.ToInt32(Console.ReadLine());
如果我不是用48减去,我就得不到正确的整数值

有人能解释一下为什么会这样吗?是否每次都需要这样做?因为在别的地方我没有减去48就计算了结果,得到了正确的结果

我正在做一个程序来打印一个数字中出现的次数。 这是我的密码:

int[] numarr = number.ToString().Select(o => Convert.ToInt32(o)-48).ToArray();
Console.WriteLine(“输入号码:”);
int number=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“输入要搜索的号码:”);
int searchnumber=Convert.ToInt32(Console.ReadLine());
int-cnt=0;
int[]numar=number.ToString().Select(o=>Convert.ToInt32(o)-48.ToArray();
for(int i=0;i
因为要将数字转换为字符串,所以检索到的整数实际上是字符串中字符的Unicode码点。根据ASCII代码表,
0
字符从位置48开始


因此,您实际上找到了一种将字符转换为整数表示形式的变通方法。如果你只是想以一种不太老套的方式得到这个数字,你可以使用,它使用模运算符。或者在原始字符串上,正如Time Schmelter在评论中所建议的那样。

因为要将数字转换为字符串,所以检索到的整数实际上是字符串中字符的Unicode码点。根据ASCII代码表,
0
字符从位置48开始


因此,您实际上找到了一种将字符转换为整数表示形式的变通方法。如果你只是想以一种不太老套的方式得到这个数字,你可以使用,它使用模运算符。或者在您的原始字符串上,正如Time Schmelter在评论中提出的那样。

您到底想实现什么?请举例说明“数字”和“o”是什么。@AsheraH-我解释道。你到底想达到什么目的?请举例说明“number”和“o”是什么。@AsheraH-I解释过。更不常见的方法是使用:
int[]numar=number.ToString()。选择(c=>(int)char.GetNumericValue(c)).ToArray()
@TimSchmelter再次将字符串转换为数字感觉很糟糕。会更好更快,即使它不是单一的line@SurabhiPandey:仅当您要将
字符
转换为
int
时。如果它是一个字符串,则不需要使用字符,因为字符本身与转换为整数的字符串不同。字符实际上是伪装的整数,指向代码表中的位置,而不是“实际”的整数值。更简单的方法是使用:
int[]numarr=number.ToString().Select(c=>(int)char.GetNumericValue(c)).ToArray()
@TimSchmelter再次将字符串转换为数字感觉很糟糕。会更好更快,即使它不是单一的line@SurabhiPandey:仅当您要将
字符
转换为
int
时。如果它是一个字符串,则不需要使用字符,因为字符本身与转换为整数的字符串不同。字符实际上是伪装的整数,指向代码表中的位置,而不是“实际”整数值。
Console.WriteLine("Enter the number:");
int number = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Enter the number to search:");
int searchnumber = Convert.ToInt32(Console.ReadLine());
int cnt = 0;

int[] numarr = number.ToString().Select(o => Convert.ToInt32(o)-48).ToArray();
for (int i = 0; i < numarr.Length; i++)
{
    Console.WriteLine(numarr[i]);
}
for (int i = 0; i < numarr.Length; i++)
{
    if (numarr[i] == searchnumber)
    {
        cnt++;
    }
}

Console.WriteLine("Number of occurence of given number is:{0}", cnt);