java - 如果需要的话,在Java中添加两个二进制字符串(包括填充)的有效方法是什么?

标签 java binary char addition

我正在编写当两个二进制文件相加时返回二进制字符串的代码。 第一步检查两个二进制字符串的长度是否相同,如果不同,则在左侧填充“0”;例如:00101 + 011001应该给 000101 + 011001用于填充;

我已经编写了这部分的代码。它工作正常,但想知道是否有有效的方法来实现相同的目的。

public class Common{

    public static void main(String[] args){


                //calling the addBinary will only print the padded binaries correctly   
        String result=addBinary("00101", "001010");
    }


public static String addBinary(String binary1, String binary2){

               String result - "";

        char[] bin1= binary1.toCharArray();
        char[] bin2=binary2.toCharArray();
        int[] bin1int=null;
        int[] bin2int=null;



        System.out.println("---------------before-----------------");

        System.out.println(Arrays.toString(bin1));
        System.out.println(Arrays.toString(bin2));

        System.out.println("-----------------After---------------------");
        int bin1_len=bin1.length;
        int bin2_len=bin2.length;
        if (bin1_len<bin2_len){
            bin1int=new int[bin2_len];
            bin2int=new int[bin2_len];
            int j=bin2_len-bin1_len;
            for (char c: binary1.toCharArray()){    
                bin1int[j]=c-'0';
                j++;
                }   
        int k=0;
        for (char c: bin2 ){
            bin2int[k]=c-'0';
            k++;
        }
        }
        System.out.println(Arrays.toString(bin1int));
        System.out.println(Arrays.toString(bin2int));

        //if (bin2_len<bin1_len)
        //reverse implementation of above;

                //yet to implement the addition calculation.

        return result;

    }
}

我对高效填充感兴趣。有什么提示/建议吗?

最佳答案

就这样做:

 // Read the binary string to integer and add the two together
 int total = Integer.parseInt(binary1, 2) + Integer.parseInt(binary2, 2);
 // Convert the resulting integer back to a binary string
 String str = new Integer(total).toBinaryString();

对于超过 32 位,您将需要使用 Long。

如果您确实想填充字符串,只需查看两个大小,然后将较短的字符串用零填充到较长字符串的长度。

String shorter, String longer;
if (binary1.length() < binary2.length) {
   shorter = binary1;
   longer = binary2;
} else {
   shorter = binary2;
   longer = binary1;
}
// Or any of the other multitude of ways to left pad a String.
shorter = org.apache.commons.lang.StringUtils.leftPad(smaller, larger.length(), '0')

关于java - 如果需要的话,在Java中添加两个二进制字符串(包括填充)的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20793198/

相关文章:

java - LinkedList Java Core Collection中,addLast有什么用?

Java:我有一组自定义类。如何删除、修改和重新插入 Set 中的一个元素?

在 C Linux 中将二进制文件转换为可读文本文件

c# - 将二进制字符串转换为十六进制

mysql 在我的查询中转义特殊的 4 个字符

java - 为什么单个Java char变量可以表示超过65535个字符?

c - 如何设置 char[] 和 int 的大小

java - 字符串到 Integer 和 int 的转换

c - 我的解释正确吗?我可以打印 double 的二进制表示形式,例如 :1?

java - 如何将 spring 2 中的 AuthenticationProcessingFilterEntryPoint 转换为 spring 4