Java中的radix参数是什么,它是如何工作的?

时间:2013-07-08 02:00:31

标签: java wrapper numeric radix

我知道函数Integer.parseInt()的基数是将字符串转换为的基础。 11基数10不能用基数/基数16转换为B而不是17

以下代码根据教科书打印17:

public class Test {
  public static void main(String[] args) {
    System.out.println( Integer.parseInt("11", 16) );
  }
}

6 个答案:

答案 0 :(得分:12)

当您使用基数执行ParseInt操作时,11 base 16被解析为17,这是一个简单的值。然后将其打印为基数10.

你想:

System.out.println(Integer.toString(11, 16));

这取十进制值11(此刻没有基数,就像有“十一”西瓜(比一个人的手指数多一个))并用基数16打印,导致{{1} }。

当我们取B值时,它将作为基数2存储在计算机的物理内存中(几乎在所有情况下),但这是无关紧要的,因为解析和tostring转换使用任意基数(默认情况下为10)。

答案 1 :(得分:5)

它实际上以十六进制取11并将其转换为十进制。因此,例如,如果您在字符串中使用相同的代码但"A",则会输出10

答案 2 :(得分:4)

下面,

public class Test {
      public static void main(String[] args) {
      System.out.println(Integer.parseInt("11", 16));
    }
}

11 16 的数字,应该以10为十进制转换。

 So, integer of (11)16 = 1*16^1 +1*16^0 = 16+1 = 17

答案 3 :(得分:1)

这个功能会像你想象的那样倒退。您将基数16中的“11”转换为基数10,因此结果为17。

答案 4 :(得分:1)

要从基数10转换为基数16,请使用

System.out.println(Integer.toString(11, 16));

输出将是b。

答案 5 :(得分:1)

您基本上是在说要将11解析为基数16 因此,如果您知道如何从十六进制转换为十进制 它看起来像这样 十六进制的11 =(((16 ^ 0)* 1)+((16 ^ 1)* 1)=十进制的17

如果您想从10为基础转换为任何基本用途:

['0.9 mg', '9 mg', '9mg', '0.9mg']