首页 > 解决方案 > 如何更好地将 char 转换为 int 保持数字值而不是 ASCII 值?

问题描述

我刚刚为我在 C# 基础学习中的示例考试编写了一个代码(c#)。

Е尽管我能够正确编写它并获得所有分数,但我对将 char ASCII 值转换为所需 int 值的方式并不十分满意。我要求一种更好的方式来表达以下代码:

使用系统;

namespace MultiplyTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //Input:
            string inputNumber = Console.ReadLine();

            //Logic:

            int firstNumber = 0;
            int secondNumber = 0;
            int thirdNumber = 0;

            for (int i = 0; i < inputNumber.Length; i++)
            {
                firstNumber = inputNumber[0] - 48;
                secondNumber = inputNumber[1] - 48;
                thirdNumber = inputNumber[2] - 48;
            }

            for (int p = 1; p <= thirdNumber; p++)
            {
                for (int j = 1; j <= secondNumber; j++)
                {
                    for (int k = 1; k <= firstNumber; k++)
                    {
                        Console.WriteLine($"{p} * {j} * {k} = {p * j * k};");
                    }
                }
            }
        }
    }
}

输入是 [111…999] 范围内的三位数整数。我使用 string 而不是 int,以更快地读取和存储所有 char 值。这里的问题是,当我有 char 让我们说“3”时,我需要使用“3”的 int 值,而不是 51 的 ASCII Dec 值。由于我编写此代码的时间有限,我成功解决了它正如您在提供的代码中看到的那样,减去 48。进行此练习的正确/更高级的方法是什么?先感谢您!

标签: c#

解决方案


foo从 的 ASCII 值中减去0的 ASCII 值将为您提供数字。

char foo = '2';
int bar = foo - '0';

或者您可以简单地将 char 转换为 string,然后再转换为 int:

int bar = int.Parse(foo.ToString()); 

推荐阅读