2011-09-15 39 views

Trả lời

76

Sử dụng Integer.parseInt (xem javadoc), có thể chuyển đổi của bạn String để int sử dụng cơ sở hai:

int decimalValue = Integer.parseInt(c, 2); 
6
int i = Integer.parseInt(c, 2); 
12

Tôi nghĩ rằng bạn đang tìm kiếm Integer.parseInt. Đối số thứ hai mất một cơ số, mà trong trường hợp này là 2.

Integer.parseInt(c, 2) 
16
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; 
} 

Đoạn mã này tôi đã viết bằng tay. Bạn cũng có thể sử dụng parseInt như đã đề cập ở trên. Chức năng này sẽ cho giá trị thập phân tương ứng với chuỗi nhị phân :)

2
int num = Integer.parseInt("binaryString",2); 
0
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); 
} 
1
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; 
} 

hoặc

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

thử nghiệm nó

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


} 

}

+0

Thêm một số giải thích với câu trả lời cho cách câu trả lời này giúp OP trong việc khắc phục sự cố hiện tại –

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

} 
+0

chỉ muốn chia sẻ giải pháp của tôi :) – George

1

Phải suy nghĩ về độ chính xác thập phân, vì vậy bạn phải giới hạn chiều dài bitstring. Dù sao, sử dụng BigDecimal là một lựa chọn tốt.

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; 
} 
+0

bạn có thể kiểm tra theo: str = "10000101001001000010111100100110000000000000000000001010111101"; –

0
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); 
    } 
} 
Các vấn đề liên quan