将由0和1组成的字符串转换为字节

3
我有两个字符串:

String a = "11111";
String b = "10001";

我想使用位运算符"&"进行比较,有什么最好的方法吗?
3个回答

7
  1. 首先,使用Long.parseLong(s, 2)方法将每个二进制String转换为long值。该方法将使用基数为2解析给定的字符串,这意味着它应该将字符串解释为二进制。
  2. 使用&运算符计算两个long值之间的按位比较。
  3. 使用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
使用 parseLong 并将基数设为 2(根据字符串的最大大小,您还可以使用 Byte 和 Integer 类中类似的函数):
long ba = parseLong(a, 2);
long bb = parseLong(b, 2);
long bc = ba & bb;

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接