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 是啥,它是如何工作的?