将二进制更改为十进制

时间:2018-10-09 09:49:24

标签: java binary decimal data-conversion

我必须编写一个将二进制更改为十进制的方法。 编写一种方法,将提供的二进制数字(作为字符串)转换为十进制数字。

  • convertToDecimal(“ 01101011”)= 107
  • convertToDecimal(“ 00001011”)= 11

我已经创建了将十进制转换为二进制的方法,但是我不确定如何将二进制转换为十进制。

public String convertToBinary(int decimal) {

    int n = decimal;
    int digit;
    String out = "";
    while (n > 0){
     n = decimal/2;
     digit = decimal % 2;
     out = digit + out;
     decimal = n;
    }

    out = addPadding(out);
    return out;
    }

private String addPadding(String s){
      String out = s;
      int len = s.length();
      if (len == 8) return s;
      else{
          switch(len){
            case 7:
                out = "0"+s;
                break;
            case 6:
                out = "00"+s;
                break;
            case 5:
                out = "000"+s;
                break;
           }
       }
       return out;
      }
}

4 个答案:

答案 0 :(得分:0)

看看如何做,这里有详细的算法: https://javarevisited.blogspot.com/2015/01/how-to-convert-binary-number-to-decimal.html

建议的算法实现将int作为输入。这是String版本:

public static int binaryToDecimal(String binary) {
     int decimal = 0;
     int power = 0;
     int currentIndex = binary.length() - 1;

     while (currentIndex>=0) {
         int currentDigit = binary.charAt(currentIndex) - '0';  //char to number conversion
         decimal += currentDigit * Math.pow(2, power);
         power++;
         currentIndex--;
     }
     return decimal;
 }

需要进行字符到数字的转换,因为我们需要将字符“ 1”或“ 0”转换为数字1或0。我们可以使用字符的ascii代码(“ 0” = 48和' 1'= 49)

答案 1 :(得分:0)

transaction

答案 2 :(得分:0)

不确定您是否必须由老师手动执行此操作,但是如果没有,则可以使用一些内置的功能:

// Convert binary String to integer:
// TODO: Surround with try-catch
int outputInt = Integer.parseInt(inputBinaryString, 2);

// Convert integer to binary String:
String outputBinaryString = Integer.toBinaryString(inputInt);

// Pad leading zeros to make the length 8:
String paddedResult = String.format("%8s", outputBinaryString).replace(' ', '0');

Try it online.

答案 3 :(得分:-1)

尝试此代码

import java.util.Scanner;

class BinaryToDecimal
{
        public static void main(String args[])
        {
            Scanner s=new Scanner(System.in);

            System.out.println("Enter a binary number:");
            int n=s.nextInt();

            int decimal=0,p=0;

            while(n!=0)
            {
                decimal+=((n%10)*Math.pow(2,p));
                n=n/10;
                p++;
            }

            System.out.println(decimal);
        }
}