1

在下面的代码中,我试图将 15 base 10 转换为 base 8 中的值,即 17。但是下面的程序给了我 13 而不是 17。该方法baseEight接收 15,string然后我的理解是 Integer.parseIntbaesEight取值 15 并将其转换为应为 17 的以 8 为基数的值。但事实并非如此。我不确定这是怎么回事。

import acm.program.*;

public class BaseCoversion  extends ConsoleProgran{
  public void run(){

    int a = 15; 
    String a = Integer.toString(a);
    println(a);
  }

  private int baseEight(String s) {
    return Integer.parseInt(s , 8 );
  }

} 
4

3 回答 3

3

要获得数字的八进制表示,您需要将基数传递给Integer.toString(int, int)方法,或者使用Integer.toOctalString(int)方法:

int a = 15; 
String s = Integer.toOctalString(a);
System.out.println(Integer.parseInt(s));

Integer.parseInt(String, int)使用给定的基数解析字符串。你不想要那个。您要求的输出只是 base 中数字的表示8

于 2013-10-12T17:40:10.343 回答
1

问题是 parseInt(s,8) 解析字符串 FROM base 8,而不是 base 8。

编辑:我忘了添加一个 Integer.toOctalString 这可能是您需要的功能。

于 2013-10-12T17:36:48.407 回答
1

以 8 为底的 15 实际上是 13 :)

如果您想要数字的八进制字符串表示,您可以使用Integer.toOctalString(number)或使用yourInteger.toString(8)

对于您的情况,这将是:

int a = 15; 
String s = Integer.toOctalString(a);
println(s);
于 2013-10-12T17:39:13.477 回答