24

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

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

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

6 に答える 6

14

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

あなたがしたい:

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

これは 10 進数の値 11 (「11」個のスイカ (人の指の数よりも 1 つ多い) のように、現時点では基数を持たない) を取り、それを基数 16 で出力すると、B.

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

于 2013-07-08T02:03:03.810 に答える
5

実際には16進数を取り込ん11で10進数に変換しています。たとえば、同じコードが"A"文字列に含まれている場合、出力は10.

于 2013-07-08T02:03:56.393 に答える
5

ここ、

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
于 2014-12-07T18:53:24.677 に答える
1

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

于 2013-07-08T02:05:42.703 に答える
1

基数 10 から基数 16 に変換するには、次を使用します。

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

出力はbになります。

于 2015-11-25T04:57:01.023 に答える