【问题标题】:How to convert binary string value to decimal如何将二进制字符串值转换为十进制
【发布时间】:2011-09-15 22:08:15
【问题描述】:

如何转换二进制字符串如

String c = "110010"; // as binary

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

【问题讨论】:

  • 请不要发布您自己没有尝试解决的问题。 How to Ask

标签: java


【解决方案1】:

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

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

【讨论】:

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

【讨论】:

    【解决方案3】:

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

    Integer.parseInt(c, 2)
    

    【讨论】:

      【解决方案4】:
      int i = Integer.parseInt(c, 2);
      

      【讨论】:

        【解决方案5】:
        int num = Integer.parseInt("binaryString",2);
        

        【讨论】:

          【解决方案6】:
          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);
          

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

            • 您可以通过以下方式进行测试:str="10000101001001000010111100100110000000000000000000001010111101";
            【解决方案8】:
            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);
            }
            

            【讨论】:

              【解决方案9】:

              测试一下

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

              }

              【讨论】:

                【解决方案10】:
                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;
                    }
                

                【讨论】:

                  【解决方案11】:
                  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);
                  
                  }
                  

                  【讨论】:

                  • 只是想分享我的解决方案 :)
                  【解决方案12】:
                  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);
                    }
                  }
                  

                  【讨论】:

                    【解决方案13】:

                    测试一下,你会发现代码中有一行包含 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);
                        }
                    }
                    

                    【讨论】:

                      【解决方案14】:
                        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;
                        }
                      

                      【讨论】:

                        【解决方案15】:

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

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

                        【讨论】:

                          猜你喜欢
                          • 2012-10-05
                          • 2012-05-02
                          • 2021-10-30
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2016-07-07
                          • 1970-01-01
                          • 2019-08-23
                          相关资源
                          最近更新 更多