我想在Java中使用字符串之间的按位运算符(stirngs具有不同的长度)。
实际上,如果我有两个字符串
例如 s1 = test s2 = sampleJAVA
我将strngs转换为二进制文件:
s1Binary = 01110100 01100101 01110011 01110100
s2Binary = 01110011 01100001 01101101 01110000 01101100 01100101 01001010 01000001 01010110 01000001
我想计算两个按位运算符
我尝试了两个字符串:
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');
}
但我坚持下去因为我有两个不同(二进制)长度的字符串
答案 0 :(得分:1)
您可以使用前导零填充较短的字符串。
转 01110100 01100101 01110011 01110100
进入 00000000 00000000 00000000 00000000 00000000 00000000 01110100 01100101 01110011 01110100
答案 1 :(得分:1)
您可以像这样使用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));