String Java 之间的按位运算符

Bitwise operators between String Java

我想在 Java.

中的字符串之间使用按位运算符(字符串的长度不同)

实际上,如果我有两个字符串

例如s1=test s2=sampleJAVA

我将字符串转换为二进制:

s1Binary=01110100 01100101 01110011 01110100

s2二进制=01110011 01100001 01101101 01110000 01101100 01100101 01001010 01000001 01010110 01000001

我想计算两个按位运算符

  1. s1二进制 | s2二进制
  2. s1 二进制 & s2 二进制

我尝试了两个字符串:

 String s1 = "test";
 byte[] a = s1.getBytes();
 String s1Binary = "";
 for (int i = 0; i < a.length; i++) {
      s1Binary = s1Binary + String.format("%8s", Integer.toBinaryString(a[i] & 0xFF)).replace(' ', '0');
  }
 /////// s2 /////
 String s2 = "sampleJAVA";
 byte[] b = s2.getBytes();
 String s2Binary = "";
 for (int i = 0; i < b.length; i++) {
      s2Binary = s2Binary + String.format("%8s", Integer.toBinaryString(b[i] & 0xFF)).replace(' ', '0');
  }

但我卡在那里是因为我有两个不同(二进制)长度的字符串

您可以用前导零填充较短的字符串。

01110100 01100101 01110011 01110100

进入00000000 00000000 00000000 00000000 00000000 00000000 01110100 01100101 01110011 01110100

您可以像这样使用 BigInteger。

String s1Binary = "01110100011001010111001101110100";
String s2Binary = "01110011011000010110110101110000011011000110010101001010010000010101011001000001";
BigInteger b1 = new BigInteger(s1Binary, 2);
BigInteger b2 = new BigInteger(s2Binary, 2);
System.out.println(b1.and(b2).toString(2));
System.out.println(b1.or(b2).toString(2));