Java 中的 radix 参数是啥,它是如何工作的?
Posted
技术标签:
【中文标题】Java 中的 radix 参数是啥,它是如何工作的?【英文标题】:What is the radix parameter in Java, and how does it work?Java 中的 radix 参数是什么,它是如何工作的? 【发布时间】:2013-07-05 06:55:35 【问题描述】:我知道函数Integer.parseInt()
的基数是将字符串转换为的基础。用基数/基数 16 转换的 11 基数 10 不应该是 B
而不是 17
?
以下代码按照教科书打印17:
public class Test
public static void main(String[] args)
System.out.println( Integer.parseInt("11", 16) );
【问题讨论】:
反过来。您要求它在 base-16 中解释"11"
。即 1*16 + 1.
感谢您的澄清
@MinhTran 请勾选对您最有帮助的答案。
【参考方案1】:
你基本上告诉解析 11 就好像它是基数 16 所以如果你知道如何从十六进制转换为十进制 它看起来像这样 十六进制的 11 = ((16^0 ) * 1) + ((16^1) * 1) = 十进制的 17
如果您想从基数 10 转换为任何基数用途:
Integer.toString(11, 16); //HEXA
output: b
Integer.toString(11, 10); //decimal
output: 11
Integer.toString(11, 8); //octal
output: 13
Integer.toString(11, 2); //Binary
output: 1011
【讨论】:
【参考方案2】:要将基数 10 转换为基数 16,请使用
System.out.println(Integer.toString(11, 16));
输出将是 b。
【讨论】:
【参考方案3】:当您使用基数执行ParseInt
操作时,11 基数 16 被解析为 17,这是一个简单的值。然后打印为基数 10。
你想要:
System.out.println(Integer.toString(11, 16));
这采用十进制值 11(目前没有基数,例如有“11”个西瓜(比一个人的手指数多一个))并使用基数 16 打印它,得到B
。
当我们采用 int
值时,它会以 2 为底值存储在计算机的物理内存中(几乎在所有情况下),但这无关紧要,因为 parse 和 tostring 转换使用任意基数(默认为 10)。
【讨论】:
【参考方案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
【讨论】:
【参考方案5】:函数按照你的想法倒退。您将基数为 16 的“11”转换为基数 10,因此结果为 17。
【讨论】:
【参考方案6】:它实际上是采用十六进制的11
并将其转换为十进制。因此,例如,如果您有相同的代码,但字符串中有"A"
,它将输出10
。
【讨论】:
以上是关于Java 中的 radix 参数是啥,它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 中的控制台路由是啥?它是如何工作的? [关闭]
解析器中的命名 Apollo Server 字段是啥?它是如何工作的?
Integer类toString(int i,int radix)方法
Laravel 应用程序密钥 - 它是啥以及它是如何工作的?
Lucene 8.5.1 中 IndexReader.getTermVector(int docID ,String field) 中的 docID 是啥,它是如何工作的?