C# Can';t在C中将字符数组转换为int值#

C# Can';t在C中将字符数组转换为int值#,c#,arrays,casting,C#,Arrays,Casting,我正在制作一个caesar密码,并试图将每个字母的char值转换为int,这样shift值就可以改变它 for (int i = 0; i < plainTextInput.Length; ++i) { chars[i] = ((int)chars[i]) + shiftAmount; } for(int i=0;i

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

for (int i = 0; i < plainTextInput.Length; ++i)
{
   chars[i] = ((int)chars[i]) + shiftAmount;         
}
for(int i=0;i
它说它不能将int转换成char。如何解决此问题?

通过显式强制转换:

chars[i] = (char)(((int)chars[i]) + shiftAmount);     
我会重写你的循环:

var enciphered = chars.Select(c => (char)((int)c + shiftAmount)).ToArray();

如果切换到不可打印的角色,您打算怎么做?标准的凯撒密码。你应该把它合并起来

编译该代码时,会收到以下错误消息:

无法将类型“int”隐式转换为“char”。显式转换 存在(您是否缺少演员阵容?)

为什么是的,你错过了一个演员阵容:

chars[i] = (char)(((int)chars[i]) + shiftAmount);

您必须显式地将其回滚:

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

然而,一旦你越过
z

你就会很快遇到麻烦,看起来chars[]是一个char数组。如果是这样,您需要将其转换回char:chars[i]=(char)((int)chars[i])+shiftAmount;