首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符之间的xor运算

字符之间的xor运算
EN

Stack Overflow用户
提问于 2014-03-26 21:31:29
回答 3查看 13.4K关注 0票数 1

我有下面这段Java代码,在Eclipse,Windows7中调试时,变量'xoredChar‘根本没有显示任何值,不是null,不是'',什么都不显示。

代码语言:javascript
复制
char xoredChar = (char) (stringA.charAt(j)^stringB.charAt(j));

为什么会这样呢?我需要了解如何在java中对两个字符进行xor运算。我遗漏了什么?

EN

回答 3

Stack Overflow用户

发布于 2014-03-26 21:35:30

如果字符串相等,你会得到一个\0,它不是一个可打印的字符。试试这样的东西,

代码语言:javascript
复制
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);

输出为

代码语言:javascript
复制
' ' = 0
票数 3
EN

Stack Overflow用户

发布于 2014-03-26 21:33:36

如果stringAstringB相同,则异或操作将产生xoredChar = 0

0可能在IDE中显示为nothing,因为在大多数情况下,0被用作字符串终止符。

票数 0
EN

Stack Overflow用户

发布于 2014-03-26 21:47:36

正如其他答案所提到的,对相同的字符进行has运算会产生一个没有可视表示形式的\0值。也许您对一个小应用程序感兴趣,它让您了解XOR在字符串上的工作原理:

代码语言:javascript
复制
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));
        }
    }
}

玩得开心!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22662559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档