我正在制作一个caesar密码,并且我试图将每个字母的char值转换为int,因此shift值可以改变它。
for (int i = 0; i < plainTextInput.Length; ++i)
{
chars[i] = ((int)chars[i]) + shiftAmount;
}
它说它无法将int转换为char。我该如何解决这个问题?
答案 0 :(得分:1)
您必须明确地将其强制转换为:
for (int i = 0; i < plainTextInput.Length; ++i)
{
chars[i] = (char)(((int)chars[i]) + shiftAmount);
}
然而,一旦你转过z
,你很快就会遇到麻烦。
答案 1 :(得分:0)
明确施放:
chars[i] = (char)(((int)chars[i]) + shiftAmount);
我会重写你的循环:
var enciphered = chars.Select(c => (char)((int)c + shiftAmount)).ToArray();
如果转换为不可打印的角色,您打算做什么?标准的凯撒密码环绕。你应该加入它。
答案 2 :(得分:0)
当我编译该代码时,我收到以下错误消息:
无法将类型'int'隐式转换为'char'。显式转换 存在(你是否错过演员表?)
为什么是,你 错过演员:
chars[i] = (char)(((int)chars[i]) + shiftAmount);