Java中的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) ); } } 

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

你要:

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

这取十进制值11(此时没有基数,就像有“十一”西瓜(比一个人的手指数多一个))并用基数16打印,产生B

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

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

这里,

 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 

该function按您的想法向后行动。 您将基数16中的“11”转换为基数10,因此结果为17。

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

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

输出将是b。