web-dev-qa-db-ja.com

Javaの基数パラメーターとは何ですか?

関数Integer.parseInt()の基数が文字列を変換するベースであることを理解しています。基数/基数16で変換された11基数10は、17ではなくBであるべきではありませんか?

次のコードは、教科書に従って17を印刷します。

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

基数を使用してParseInt操作を実行すると、11の基数16は単純な値である17として解析されます。次に、基数10として印刷されます。

あなたが欲しい:

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

これは10進値11(「11」のスイカ(人が持っている指の数よりも1つ多い)のように、現時点では基数がありません)を取り、基数16で出力し、Bになります。

int値を取得すると、コンピューターの物理メモリ内に基数2として格納されます(ほとんどすべての場合)が、解析およびtostring変換は任意の基数(デフォルトでは10)で機能するため、これは無関係です。

12
Andrey Akhmetov

実際には11は16進数で、10進数に変換します。たとえば、同じコードであるが"A"は文字列で、10

5
Doorknob

ここに、

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

1116ベースの数値であり、10進数、つまり10進数で変換する必要があります。

 So, integer of (11)16 = 1*16^1 +1*16^0 = 16+1 = 17
4

ベース10からベース16に変換するには

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

出力はbになります。

1
Abhishek K

あなたが考えるように、関数は逆方向に作用します。 16進数の「11」を10進数に変換するため、結果は17になります。

1
d4vsanchez