我的问题的背景
嗨,我只是试图完成项目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;
}
答案 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的原因。