如何使用BigInteger将二进制转换为十进制?

时间:2017-06-04 06:56:30

标签: java biginteger

我正在尝试使用BigInteger类从二进制数打印十进制数。 我正在使用BigInteger类的BigInteger(String val,int radix)构造函数将给定的二进制值转换为十进制,但它打印的是构造函数中传递的精确二进制值.Waht是错误吗? 代码如下:

System.out.print("Ente the decimal number:");
s=String.valueOf(sc.nextInt());

BigInteger i=new BigInteger(s,10);
System.out.println(i);

3 个答案:

答案 0 :(得分:1)

实际上您没有打印二进制数的十进制值

打印的值是String val

的精确十进制表示

根据您在此声明中提到的radix,它将如下所示:

 BigInteger i = new BigInteger("11101", 10); // 11101 

11101此输出实际上是十进制数而不是二进制数

为了获得预期的结果,您应该将radix值更改为2,之后它将打印二进制数的十进制值:

BigInteger i = new BigInteger("11101", 2);
System.out.println(i);

<强>输出

29

答案 1 :(得分:0)

如果您尝试将输入String解析为二进制文件,则应编写:

BigInteger i=new BigInteger(s,2);

打印时

System.out.println(i);

默认情况下会以十进制显示。

然而,将数字读为int然后转换为String并传递给BigInteger构造函数是没有意义的,因为这限制了数字的范围那会有用。

尝试:

s = sc.nextLine();
BigInteger i=new BigInteger(s,2);
System.out.println(i);

答案 2 :(得分:0)

要以二进制形式解析输入,请使用基数为2的Scanner.nextBigInteger()

System.out.print("Enter the decimal number:");
BigInteger i = sc.nextBigInteger(2);
System.out.println(i);

默认情况下输出为十进制。