我有以下Java代码,在Eclipse,Windows 7,变量' xoredChar'根本没有显示任何价值,不是空,不是'',没有。
char xoredChar = (char) (stringA.charAt(j)^stringB.charAt(j));
为什么?我需要了解如何在java中的两个字符之间执行此xor操作。我错过了什么?
答案 0 :(得分:3)
好吧,如果字符串相等,你就会得到一个不是可打印字符的\0
。试试这样的事情,
String stringA = "A";
String stringB = "A";
int j = 0;
char xoredChar = (char) (stringA.charAt(j) ^ stringB.charAt(j));
System.out.printf("'%c' = %d\n", xoredChar, (int) xoredChar);
输出
' ' = 0
答案 1 :(得分:0)
如果stringA
和stringB
相同,则XOR操作将产生xoredChar = 0
。
在大多数情况下,0可能在IDE中显示为0,因为0用作字符串终止符。
答案 2 :(得分:0)
正如其他答案所提到的,xoring相同的字符会产生\0
值,该值没有可视化表示。 Perhapse你对一个小应用程序感兴趣,它可以让你知道XOR如何在你的字符串上运行:
public class Example {
public static void main(String[] args) {
String a = "abcde";
String b = a;
for (int idx = 0; idx < b.length(); idx++) {
System.out.printf("xoring <%s> [%s] with <%s> [%s]\n",
a.charAt(0), toBinaryString(a.charAt(0)),
b.charAt(idx), toBinaryString(b.charAt(idx)));
int c = (a.charAt(0) ^ b.charAt(idx));
System.out.printf("result is <%s> [%s]\n",
(char) c, toBinaryString(c));
}
}
}
玩得开心!