c# - 如何更好地将 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。进行此练习的正确/更高级的方法是什么?先感谢您!
解决方案
foo
从 的 ASCII 值中减去0
的 ASCII 值将为您提供数字。
char foo = '2';
int bar = foo - '0';
或者您可以简单地将 char 转换为 string,然后再转换为 int:
int bar = int.Parse(foo.ToString());
推荐阅读
- sql - 如何获取 PostgreSQL 表中的相关数据?
- javascript - 反应:Componentdidupdate,无法访问对象值
- r - 如何在 ggplot2 中为单个几何/颜色组合创建图例条目?
- google-apps-script - 谷歌表格脚本在最后一条记录之后复制并粘贴到另一张表格中
- xcode - no .xcodeproj file when downloading ZIP on github
- firebase - 全局 on_message 回调 firebase 颤动
- python - How to install a package on my jupyter notebook that is only available on pip and not in conda?
- python - Appending to a recursive list in python
- javascript - 如何使用 lodash javascript 对对象中的数组数据进行分组
- r - 在 R 中使用 ggplot 自定义热图外观