C#中两个字母的异或,不对称

C#中两个字母的异或,不对称,c#,encryption,xor,C#,Encryption,Xor,所以,我有这个基本的加密功能,我真的被卡住了 String result = ""; .... result += ((char)('A' + ((message[i]) - 'A') ^ (key[j] - 'A'))); 其思想是,A=0,B=1,C=2,等等,并用一个符号接一个符号地发送给消息。 出于某种原因,如果我将“B”和“A”以及“A”和“B”异或,我会得到不同的结果。为什么我会得到这样的结果?加法的优先级高于异或。在XOR操作周围缺少一对括号 result += (char)('

所以,我有这个基本的加密功能,我真的被卡住了

String result = "";
....
result += ((char)('A' + ((message[i]) - 'A') ^ (key[j] - 'A')));
其思想是,A=0,B=1,C=2,等等,并用一个符号接一个符号地发送给消息。
出于某种原因,如果我将“B”和“A”以及“A”和“B”异或,我会得到不同的结果。为什么我会得到这样的结果?

加法的优先级高于异或。在XOR操作周围缺少一对括号

result += (char)('A' + ((message[i] - 'A') ^ (key[j] - 'A')));

加法的优先级高于异或。在XOR操作周围缺少一对括号

result += (char)('A' + ((message[i] - 'A') ^ (key[j] - 'A')));

你需要一组额外的括号。您的代码正在计算
((消息[i])-'A')
,然后将
A
添加到其中,然后用
(键[j]-'A')
对其进行异或运算。您需要将XOR操作包装在括号中,以便转换回
char


但是,如果您将整个操作分解为几个不同的语句,而不是尝试在同一行中执行这么多不同的操作,则阅读起来会更加清晰。

您需要一组额外的括号。您的代码正在计算
((消息[i])-'A')
,然后将
A
添加到其中,然后用
(键[j]-'A')
对其进行异或运算。您需要将XOR操作包装在括号中,以便转换回
char

但是,如果您将整个操作分解为几个不同的语句,而不是尝试在同一行中做这么多不同的事情,那么阅读起来就会更加清晰。

发布一个真实的代码,可以重现您的问题,如何发布一个真实的代码,可以重现您的问题?