功能显示错误的字符代码值

时间:2017-02-11 21:38:07

标签: java c#

我的问题的背景

嗨,我只是试图完成项目Euler的练习,该项目表明我必须从“.txt”文件中读取所有名称,并为该字符串中的每个字符添加所有字符代码等。正如我在做的那样练习我意识到正在显示错误的字符代码。

这是项目Euler

中我的问题的完整详情
  

使用names.txt(右键单击并将“保存链接/目标为...”),一个46K文本   包含超过五千个名字的文件,首先对其进行排序   按字母顺序排列。然后计算出字母值   每个名称,将该值乘以其中的字母位置   列表以获得名称分数。

     

例如,当列表按字母顺序排序时,COLIN,   值得3 + 15 + 12 + 9 + 14 = 53,是第938名   名单。因此,COLIN将获得938×53 = 49714的分数。

     

文件中所有名称分数的总和是多少?

我的问题

当“C”的实际字符代码值为3时,为什么我的代码显示字符“C”的值“67”? 。提前谢谢。

private static int NameValue(string name)
{
    string StrimName = name.Substring(1, name.Length-2); // name  --->  COLIN            
    Console.WriteLine(StrimName[0] + 0); // should print 3 because character code for "C" Is 3 but result is 67...
    return 0;
}

2 个答案:

答案 0 :(得分:3)

它从ASCII表中打印一个数字:http://www.asciitable.com/

您应该将其替换为:

Console.WriteLine((StrimName[0]-64) + 0);

接收你想要的东西。事实证明你想把'A'算作一个,它在ASCII表中的数字是65,因此我减去64。

答案 1 :(得分:0)

每个字符在ascii代码中都有一个数字, ascii-code dor'C'是67,这就是你看67的原因。

You can see here a table for ascii code