字符串的二进制加法

时间:2019-09-05 10:50:46

标签: java string binary

我需要如下组合一个字符串数组(因为结果字符串中的每个字符都是按位&表示输入字符串中的字符)

String a = "10110001"
String b = "01101101"
String c = "10101011"

String result = "00100001"

我想出的解决方案:

long resultLong = 0;

for( String a : inputs )
{
    resultLong = resultLong & Long.parseLong( a ,2);
}

String result = Long.toBinaryString( resultLong );

输入字符串中的字符数可能很长,并且上述解决方案不起作用(NumberFormatException)。我无法理解如何实现这一点,最干净的方法是什么?

2 个答案:

答案 0 :(得分:3)

如果Long不足以满足您的用例,则可以使用BigInteger

BigInteger(String val, int radix);

将String和radix作为参数。

BigInteger result = new BigInteger(inputs[0], 2);

for (int i = 1; i < inputs.length; i++) {
    result = result.and(new BigInteger(inputs[i], 2));
}

String resultStr = result.toString(2);

答案 1 :(得分:0)

这是您的算法。只要所有Strings的长度都相同,这将适用于任意数量的String

public static void main(String[] args) {
    String a = "10110001";
    String b = "01101101";
    String c = "10101011";

    String arr[] = new String[]{a, b, c};

    String finalString = "";
    for (int i = 0; i < arr[0].length(); i++) {
        int temp = Integer.parseInt("" + arr[0].charAt(i));
        for (int j = 1; j < arr.length; j++) {
            temp = temp & Integer.parseInt("" + arr[j].charAt(i));
        }
        finalString += temp;
    }
    System.out.println(finalString);
}

O / P

00100001