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。