【发布时间】:2013-02-04 23:32:51
【问题描述】:
我最近开始使用 C#,并试图了解为什么以下代码无法编译。在错误注释的行中,我得到:
无法将类型“int”隐式转换为“char”。显式转换退出(您是否缺少演员表?)
我正在尝试对两个字符串进行简单的异或运算。
public string calcXor (string a, string b)
{
char[] charAArray = a.ToCharArray();
char[] charBArray = b.ToCharArray();
char[] result = new char[6];
int len = 0;
// Set length to be the length of the shorter string
if (a.Length > b.Length)
len = b.Length - 1;
else
len = a.Length - 1;
for (int i = 0; i < len; i++) {
result[i] = charAArray[i] ^ charBArray[i]; // Error here
}
return new string (result);
}
【问题讨论】:
-
如果你的字符串是 ASCII,试试这个
result[i] =(char)((short) charAArray[i] ^ (short)charBArray[i]); -
位运算符只将数字作为操作数。您的字符串是一系列数字吗?还是您尝试根据 ASCII 值执行此操作?
-
谢谢,我忘了 xor 是按位运算符,所以它需要 1 和 0,这就是它抱怨 int 转换的原因。
-
为了向未来的读者澄清,
bitwise operator不是take 1 and 0。那将是一个boolean operator,它只有两个值。bitwise operator作用于两个整数的所有位,产生一个整数。如已接受的答案所示。