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
我想计算两个按位运算符
- s1二进制 | s2二进制
- 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));
我想在 Java.
中的字符串之间使用按位运算符(字符串的长度不同)实际上,如果我有两个字符串
例如s1=test s2=sampleJAVA
我将字符串转换为二进制:
s1Binary=01110100 01100101 01110011 01110100
s2二进制=01110011 01100001 01101101 01110000 01101100 01100101 01001010 01000001 01010110 01000001
我想计算两个按位运算符
- s1二进制 | s2二进制
- 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));