如何将二进制字符串值转换为十进制

时间:2011-09-15 22:08:16

标签: java

如何转换二进制字符串,例如

String c = "110010"; // as binary

到Java中的十进制值? (示例中的预期结果是50)

15 个答案:

答案 0 :(得分:83)

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

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

答案 1 :(得分:17)

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。 此函数将给出与二进制字符串对应的十进制值:)

答案 2 :(得分:12)

我认为您正在寻找Integer.parseInt。第二个参数采用基数,在本例中为2。

Integer.parseInt(c, 2)

答案 3 :(得分:6)

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

答案 4 :(得分:2)

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

答案 5 :(得分: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;
}

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

答案 6 :(得分:1)

必须考虑小数精度,因此必须限制位串长度。无论如何,使用BigDecimal是一个不错的选择。

    //creates a generic binary search tree class
public class BinarySearchTree<A> {

    //the root of the node, which is the middle value
    Node root;

    //this constructor will add a node
    public void addNode(A userNumber){

        Node<A> newNode = Node<A>(A userNumber);

    }//end addNode





    public class Node<T>{
        //this generic variable will become the user input either int or fraction
        private T number;

        //nodes that will become the left of right child of a parent node
        Node<T> leftChild;
        Node<T> rightChild;

        //a node constructor that will take a generic input
        Node(T number){
            this.number = number;
        }//end node constructor
    }//end the Node class



}//end binary search tree

答案 7 :(得分: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);
}

答案 8 :(得分:0)

测试

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


}

}

答案 9 :(得分: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;
    }

答案 10 :(得分: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);

}

答案 11 :(得分: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);
  }
}

答案 12 :(得分:0)

测试一下,你会发现代码中有一行包含 Scan.S()。这只用于存储数据(字符串)。 所以试试这个:

PS:别忘了将文件保存为bindec

import java.io.*;
class Scan
{        
    public static String S() 
    {
        String x;
    char c;
    boolean erreur;

    do
    {
            x = "";
            erreur = false;

            try
            {
                while((c = (char)System.in.read()) != '\n')
        {
                    if (c != '\r')
                    {
                        x += c;
                    }
                }
            }
            catch(IOException e)
            {
                System.out.print(" > enter String : ");
                erreur = true;
            }
    } while(erreur);

    return x;
    }
public class  bindec{

    public static void main (String[] args) {
        int b=0;
        String a;
        System.out.println("bin: ");
        a = Lire.S();
        int j=a.length()-1;
        for(int i=0;i<a.length() ;i++ ){
            if(a.charAt(i)=='1'){
            b += Math.pow(2,j);
        }
        if(a.charAt(i)=='0'){
            b+=0;
        }
        j=j-1;
    }
        System.out.println("dec: "+b);
    }
}

答案 13 :(得分:0)

  int base2(String bits) {
    int ans = 0;
    for (int i = bits.length() - 1, f = 1; i >= 0; i--) {
      ans += f * (bits.charAt(i) - '0');
      f <<= 1;
    }
    return ans;
  }

答案 14 :(得分:0)

据此:1 我们可以编写这个帮助函数:

    public static int convertBinaryToDecimal(String str) {
        int result = 0;
        for (int i = 0; i < str.length(); i++) {
            int value = Character.getNumericValue(str.charAt(i));
            result = result * 2 + value;
        }
        return result;
    }