无法在C#中将char数组转换为int值

时间:2011-09-30 02:33:53

标签: c# arrays casting

我正在制作一个caesar密码,并且我试图将每个字母的char值转换为int,因此shift值可以改变它。

for (int i = 0; i < plainTextInput.Length; ++i)
{
   chars[i] = ((int)chars[i]) + shiftAmount;         
}

它说它无法将int转换为char。我该如何解决这个问题?

3 个答案:

答案 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);