C# Can';t在C中将字符数组转换为int值#
我正在制作一个caesar密码,并试图将每个字母的char值转换为int,这样shift值就可以改变它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
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;