Java 字符串的二进制加法

Java 字符串的二进制加法,java,string,binary,Java,String,Binary,我需要组合一个字符串数组,如下所示(因此结果字符串中的每个字符都是输入字符串中字符的按位排列的) 我提出的解决方案是: long resultLong = 0; for( String a : inputs ) { resultLong = resultLong & Long.parseLong( a ,2); } String result = Long.toBinaryString( resultLong ); 输入字符串中的字符数可能很长,而上述解决方案无法工作(Nu

我需要组合一个字符串数组,如下所示(因此结果字符串中的每个字符都是输入字符串中字符的按位排列的)

我提出的解决方案是:

long resultLong = 0;

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

String result = Long.toBinaryString( resultLong );

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

如果您的用例不够长,那么您可以使用
biginger

BigInteger(String val, int 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);
BigInteger结果=新的BigInteger(输入[0],2);
for(int i=1;i
这是您的算法。这将适用于任何数量的
字符串
,前提是所有
字符串
长度相同:

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);
}

多长就是很长?@khelwood 3600个字符这给了我在问题中输入的op 100001,因此缺少前导0's@Chillax
100001
是正确答案。如果需要达到预期长度,可以用前导零填充。@khelwood Clear很高兴注意,结果可以按位计算(或按字符计算,如果愿意的话),因此数值的最大长度与答案无关。。。
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);
}
00100001