関数Integer.parseInt()
の基数が文字列を変換するベースであることを理解しています。基数/基数16で変換された11基数10は、17
ではなくB
であるべきではありませんか?
次のコードは、教科書に従って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));
これは10進値11(「11」のスイカ(人が持っている指の数よりも1つ多い)のように、現時点では基数がありません)を取り、基数16で出力し、B
になります。
int
値を取得すると、コンピューターの物理メモリ内に基数2として格納されます(ほとんどすべての場合)が、解析およびtostring変換は任意の基数(デフォルトでは10)で機能するため、これは無関係です。
実際には11
は16進数で、10進数に変換します。たとえば、同じコードであるが"A"
は文字列で、10
。
ここに、
public class Test {
public static void main(String[] args) {
System.out.println(Integer.parseInt("11", 16));
}
}
11は16ベースの数値であり、10進数、つまり10進数で変換する必要があります。
So, integer of (11)16 = 1*16^1 +1*16^0 = 16+1 = 17
ベース10からベース16に変換するには
System.out.println(Integer.toString(11, 16));
出力はbになります。
あなたが考えるように、関数は逆方向に作用します。 16進数の「11」を10進数に変換するため、結果は17になります。