2011-09-15 18 views

risposta

76

Usa Integer.parseInt (vedi javadoc), che converte il vostro String a int con base due:

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

Penso che si stanno cercando Integer.parseInt. Il secondo argomento prende una radice, che in questo caso è 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; 
} 

Questo pezzo di codice che ho scritto manualmente. Puoi anche usare parseInt come menzionato sopra. Questa funzione emette un valore decimale corrispondente alla stringa binaria :)

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

o

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

test è

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

Aggiungi una spiegazione con la risposta per come questa risposta aiuta OP nel risolvere il problema corrente –

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

volevo solo condividere la mia soluzione :) – George

1

Devo pensare alla precisione decimale, quindi è necessario per limitare la lunghezza bitstring. Ad ogni modo, usare BigDecimal è una buona scelta.

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

puoi testare da: 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); 
    } 
} 
Problemi correlati