Solución:
Cuando realizas el ParseInt
operación con la base, el 11 base 16 se analiza como 17, que es un valor simple. Luego se imprime como base 10.
Quieres:
System.out.println(Integer.toString(11, 16));
Esto toma el valor decimal 11 (que no tiene una base en este momento, como tener “once” sandías (uno más que el número de dedos que tiene una persona)) y lo imprime con la base 16, lo que da como resultado B
.
Cuando tomamos un int
valor se almacena como base 2 dentro de la memoria física de la computadora (en casi todos los casos) pero esto es irrelevante ya que las conversiones de análisis y conversión funcionan con una base arbitraria (10 por defecto).
En realidad está tomando 11
en hexadecimal y convertirlo a decimal. Entonces, por ejemplo, si tuviera el mismo código pero con "A"
en la cadena, saldría 10
.
Aquí,
public class Test {
public static void main(String[] args) {
System.out.println(Integer.parseInt("11", 16));
}
}
11 es dieciséis número basado y debe convertirse a 10, es decir, decimal.
So, integer of (11)16 = 1*16^1 +1*16^0 = 16+1 = 17