转换字符串为0& 1到字节

时间:2016-01-16 16:49:04

标签: java byte

我有两个字符串:

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

我想与"&"运算符进行逐位比较。

最好的方法是什么?

3 个答案:

答案 0 :(得分:5)

  1. 首先,使用Long.parseLong(s, 2)将每个二进制文件String转换为long值。此方法将使用2的基数解析给定的String,这意味着它应将String解释为二进制。
  2. 计算两个&值与long的按位比较。
  3. 使用Long.toBinaryString(i)将其转换回二进制字符串。
  4. 以下是示例代码:

    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;