我有两个字符串:
我想使用位运算符"
String a = "11111";
String b = "10001";
我想使用位运算符"
&
"进行比较,有什么最好的方法吗?Long.parseLong(s, 2)
方法将每个二进制String
转换为long
值。该方法将使用基数为2解析给定的字符串,这意味着它应该将字符串解释为二进制。&
运算符计算两个long
值之间的按位比较。Long.toBinaryString(i)
方法将其转换回二进制字符串。以下是示例代码:
public static void main(String[] args) {
String a = "11111";
String b = "10001";
long la = Long.parseLong(a, 2);
long lb = Long.parseLong(b, 2);
long lc = la & lb;
String c = Long.toBinaryString(lc);
System.out.println(c); // prints 10001
}
另一种不使用原始的long
值的方法是手动循环遍历数字,并将其代码点的&
结果存储在StringBuilder
中:
public static void main(String[] args) {
String a = "11111";
String b = "10001";
StringBuilder sb = new StringBuilder(a.length());
for (int i = 0; i < a.length(); i++) {
sb.appendCodePoint(a.codePointAt(i) & b.codePointAt(i));
}
String c = sb.toString();
System.out.println(c);
}
parseLong
并将基数设为 2(根据字符串的最大大小,您还可以使用 Byte 和 Integer 类中类似的函数):long ba = parseLong(a, 2);
long bb = parseLong(b, 2);
long bc = ba & bb;
你可以使用 Integer.parseInt( String s, int radix) 或者 Long.parseLong( String s, int radix)。
String a = "11111";
String b = "10001";
int ia = Integer.parseInt( a, 2);
int ib = Integer.parseInt( b, 2 );
int c = ib & ic;