簡體   English   中英

Java 中的基數參數是什么,它是如何工作的?

[英]What is the radix parameter in Java, and how does it work?

我知道函數Integer.parseInt()的基數是將字符串轉換成的基數。 用基數/基數 16 轉換的 11 base 10 不應該是B而不是17嗎?

以下代碼根據教科書打印17:

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

當您使用基數執行ParseInt操作時,11 基 16 被解析為 17,這是一個簡單的值。 然后將其打印為基數 10。

你要:

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

這取十進制值 11(目前沒有基數,就像有“十一”個西瓜(比一個人的手指數多一個))並用基數 16 打印它,結果是B

當我們取一個int值時,它以 2 為基數存儲在計算機的物理內存中(幾乎在所有情況下),但這無關緊要,因為 parse 和 tostring 轉換使用任意基數(默認為 10)。

它實際上是在十六進制中取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

你基本上告訴解析 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

該功能按您的想法向后運行。 您將基數為 16 的“11”轉換為基數 10,因此結果為 17。

要將基數 10 轉換為基數 16,請使用

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

輸出將為 b。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM