Java 如何使用ascii表将字符转换为十进制?

Java 如何使用ascii表将字符转换为十进制?,java,Java,我正在开发一个java程序,将4位二进制数转换为十进制数。我需要输入二进制作为字符串,转换成字符,然后转换成十进制。我不能使用类似于: int decimal = Integer.parseInt("1010", 2); 以下是我目前的代码: import java.util.Scanner; public class BinaryConvert2 { public static void main(String[] args){ System.out.print

我正在开发一个java程序,将4位二进制数转换为十进制数。我需要输入二进制作为字符串,转换成字符,然后转换成十进制。我不能使用类似于:

int decimal = Integer.parseInt("1010", 2);
以下是我目前的代码:

  import java.util.Scanner;

public class BinaryConvert2 {
    public static void main(String[] args){
        System.out.println("Please enter a 4 digit binary number: ");
        Scanner s = new Scanner(System.in);
        String binaryNumber = s.next();
        char a, b, c, d;
        a = binaryNumber.charAt(0);
        a = (char) (a*2*2*2);
        b = binaryNumber.charAt(1);
        b = (char) (b*2*2);
        c = binaryNumber.charAt(2);
        c = (char) (c*2);
        d = binaryNumber.charAt(3);
        d = (char) (d*1);
        System.out.println(binaryNumber + " in decimal is: " + a + b + c + d);
    }
}
我试图将char值乘以2的幂,这样它将转换为十进制,但是当我运行程序时,我得到了奇怪的答案,例如:

Please enter a 4 digit binary number: 
1010
1010 in decimal is: ?Àb0
0
的ascii(字符)值为48,如果
1
的值为49

因此,您需要从值中减去
48

a = binaryNumber.charAt(0);
int aInt = (a - 48) * 2 * 2* 2;
....
System.out.println(binaryNumber + " in decimal is: " + (aInt + bInt + cInt + dInt));

问题是,您正在将AB c和d打印为字符,因此它将打印ascii表中AB c和d的十进制值。如果你想打印出小数,你必须通过减去48将值转换成小数,然后将它们相加,再打印出来

必须是这样的:
1010=8+0+2+0=10,然后打印10。您的思路是正确的

获取数值并进行乘法,如果使用char,它将使用ASCII值

    int num = 0;
    a = binaryNumber.charAt(0);
    num += (Character.getNumericValue(a) * 2 * 2 * 2);
    b = binaryNumber.charAt(1);
    num += (Character.getNumericValue(b) * 2 * 2);
    c = binaryNumber.charAt(2);
    num += (Character.getNumericValue(c) * 2);
    d = binaryNumber.charAt(3);
    num += (Character.getNumericValue(d) * 1);
    System.out.println(binaryNumber + " in decimal is: " + num);

谢谢你,这帮了大忙。我很乐意帮忙。请考虑投票和/或接受这个回答你好,如果我的回答帮助你考虑接受它