我最近开始玩C#,我试图理解为什么下面的代码不能编译.在错误评论的行上,我得到:
无法将类型'int'隐式转换为'char'.显式转换退出(您是否错过了演员?)
我正在尝试使用两个字符串进行简单的XOR操作.
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);
}
Run Code Online (Sandbox Code Playgroud)
Ton*_*oei 16
如果您使用XOR-ing来隐藏数据,请查看下面的代码.只要有必要,密钥将重复.这可能是一个更短/更好的方法:
public static string xorIt(string key, string input)
{
StringBuilder sb = new StringBuilder();
for(int i=0; i < input.Length; i++)
sb.Append((char)(input[i] ^ key[(i % key.Length)]));
String result = sb.ToString ();
return result;
}
Run Code Online (Sandbox Code Playgroud)
你正在做一个xor2 个字符。这将为您进行隐式类型转换,int因为没有数据丢失。但是,从intto转换回char将需要您提供显式转换。
您需要明确地将您的转换int为charfor result[i]:
result[i] = (char) (charAArray[i] ^ charBArray[i]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24831 次 |
| 最近记录: |