我有两个字符串:
String a = "11111";
String b = "10001";
我想与"&"
运算符进行逐位比较。
最好的方法是什么?
答案 0 :(得分:5)
Long.parseLong(s, 2)
将每个二进制文件String
转换为long
值。此方法将使用2的基数解析给定的String,这意味着它应将String解释为二进制。&
值与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);
}
答案 1 :(得分:1)
使用基数为2的parseLong
(您也可以使用字节和整数类中的类似函数,具体取决于字符串的最大大小):
long ba = parseLong(a, 2);
long bb = parseLong(b, 2);
long bc = ba & bb;
答案 2 :(得分:0)
您可以使用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;