Java中二进制字符串的Xor [英] Xor of binary strings in java

查看:104
本文介绍了Java中二进制字符串的Xor的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下代码来XOR 2字符串

i am using the following code to XOR 2 strings

String lseq = "0011111111101111111111111100101101111100110000001011111000010100";
String tseq = "0011111111100000110011001100110011001100110011001100110011001100";

StringBuilder sb = new StringBuilder();

for(int i = 0; i < lseq.length(); i++)
    sb.append((lseq.charAt(i) ^ tseq.charAt(i)));

String result = sb.toString();
System.out.println(result);

上面的代码给出了正确的输出:

The above code gives me correct output :

0000000000001111001100110000011110110000000011000111001011011000

我需要多扫一遍字符串

String hseq = "0011111111110010010111110100010111100000101101001110000100011110";

如果我尝试 sb.append((lseq.charAt(i)^ tseq.charAt(i)^ hseq.charAt(i));

我得到结果:

48484848484848484848484948484948494848494848494949484848494848494848494849494848484949494948484848484948494948494949484948484948

这是错误的。我需要帮助做3个二进制字符串的xor

which is wrong. I need help in doing xor of 3 binary strings

推荐答案

我会这样做

private static boolean bitOf(char in) {
    return (in == '1');
}

private static char charOf(boolean in) {
    return (in) ? '1' : '0';
}

public static void main(String[] args) {
    String lseq ="0011111111101111111111111100101101111100110000001011111000010100";
    String tseq ="0011111111100000110011001100110011001100110011001100110011001100";
    String hseq ="0011111111110010010111110100010111100000101101001110000100011110";

    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < lseq.length(); i++) {
        sb.append(charOf(bitOf(lseq.charAt(i)) ^ bitOf(tseq.charAt(i))
                ^ bitOf(hseq.charAt(i))));
    }

    String result = sb.toString();
    System.out.println(result);
}

哪些输出

0011111111111101011011000100001001010000101110001001001111000110

这篇关于Java中二进制字符串的Xor的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆