如何将二进制string值转换为十进制

如何转换二进制string如

String c = "110010"; // as binary 

到Java中的十进制值? (预期结果在这个例子中是50)

使用Integer.parseInt (请参阅javadoc ),它将您的String转换为使用基本二的int

 int decimalValue = Integer.parseInt(c, 2); 
 public static int integerfrmbinary(String str){ double j=0; for(int i=0;i<str.length();i++){ if(str.charAt(i)== '1'){ j=j+ Math.pow(2,str.length()-1-i); } } return (int) j; } 

这段代码我手写。 您也可以使用上面提到的parseInt。 这个函数会给出与二进制string对应的十进制数值:)

我想你正在寻找Integer.parseInt 。 第二个参数取一个基数,在这种情况下是2。

 Integer.parseInt(c, 2) 
 int i = Integer.parseInt(c, 2); 
 int num = Integer.parseInt("binaryString",2); 

必须考虑小数精度,所以你必须限制bitstring的长度。 无论如何,使用BigDecimal是一个不错的select。

 public BigDecimal bitStringToBigDecimal(String bitStr){ BigDecimal sum = new BigDecimal("0"); BigDecimal base = new BigDecimal(2); BigDecimal temp; for(int i=0;i<bitStr.length();i++){ if(bitStr.charAt(i)== '1'){ int exponent= bitStr.length()-1-i; temp=base.pow(exponent); sum=sum.add(temp); } } return sum; } 
 public static void convertStringToDecimal(String binary) { int decimal=0; int power=0; while(binary.length()>0) { int temp = Integer.parseInt(binary.charAt((binary.length())-1)+""); decimal+=temp*Math.pow(2, power++); binary=binary.substring(0,binary.length()-1); } System.out.println(decimal); } 
 public static Long binToDec(String bin) { long dec = 0L; long pow = 1L; for (int i = (bin.length() - 1); i >= 0; i--) { char c = bin.charAt(i); dec = dec + (Long.parseLong(c + "") * pow); pow = pow * 2; } return dec; } 

要么

 long num = Long.parseLong("101110111",2); 

testing它

 import java.util.Scanner; public class BinaryToDecimal{ public static void main(String[] args) { Scanner input = new Scanner(System.in); int binaryNumber = 0; int counter = 0; int number = 0; System.out.print("Input binary number: "); binaryNumber = input.nextInt(); //it's going to stop when the binaryNumber/10 is less than 0 //example: //binaryNumber = 11/10. The result value is 1 when you do the next //operation 1/10 . The result value is 0 while(binaryNumber != 0) { //Obtaining the remainder of the division and multiplying it //with the number raised to two //adding it up with the previous result number += ((binaryNumber % 10)) * Math.pow(2,counter); binaryNumber /= 10; //removing one digit from the binary number //Increasing counter 2^0, 2^1, 2^2, 2^3..... counter++; } System.out.println("Decimal number : " + number); } 

}

 private static int convertBinaryToDecimal(String strOfBinary){ int flag = 1, binary=0; char binaryOne = '1'; char[] charArray = strOfBinary.toCharArray(); for(int i=charArray.length-1;i>=0;i--){ if(charArray[i] == binaryOne){ binary+=flag; } flag*=2; } return binary; } 
 public static void main(String[] args) { java.util.Scanner scan = new java.util.Scanner(System.in); long decimalValue = 0; System.out.println("Please enter a positive binary number.(Only 1s and 0s)"); //This reads the input as a String and splits each symbol into //array list String element = scan.nextLine(); String[] array = element.split(""); //This assigns the length to integer arrys based on actual number of //symbols entered int[] numberSplit = new int[array.length]; int position = array.length - 1; //set beginning position to the end of array //This turns String array into Integer array for (int i = 0; i < array.length; i++) { numberSplit[i] = Integer.parseInt(array[i]); } //This loop goes from last to first position of an array making //calculation where power of 2 is the current loop instance number for (int i = 0; i < array.length; i++) { if (numberSplit[position] == 1) { decimalValue = decimalValue + (long) Math.pow(2, i); } position--; } System.out.println(decimalValue); main(null); } 
 import java.util.*; public class BinaryToDecimal { public static void main() { Scanner sc=new Scanner(System.in); System.out.println("enter the binary number"); double s=sc.nextDouble(); int c=0; long s1=0; while(s>0) { s1=s1+(long)(Math.pow(2,c)*(long)(s%10)); s=(long)s/10; c++; } System.out.println("The respective decimal number is : "+s1); } }