我正在编写当两个二进制文件相加时返回二进制字符串的代码。
第一步检查两个二进制字符串的长度是否相同,如果不同,则在左侧填充“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/