una para numero hexadecimal convertir como cambiar cadena algoritmo java integer parseint hex

para - java int to hex string



¿Al analizar una cadena hexadecimal en un entero se arroja una NumberFormatException? (5)

¿Ayudará esto?

Integer.parseInt("00ff00", 16)

16 significa que debe interpretar la cadena como 16 (hexadecimal). Al usar 2 puedes analizar el número binario, 8 significa octal. 10 es el predeterminado y analiza números decimales.

En su caso Integer.parseInt(primary.getFullHex(), 16) no funcionará debido al prefijo 0x precedido por getFullHex() - deshágase de él y estará bien.

Entonces, en Java, sabes cómo puedes declarar enteros como este:

int hex = 0x00ff00;

Pensé que deberías poder revertir ese proceso. Tengo este código:

Integer.valueOf(primary.getFullHex());

donde primario es un objeto de una clase de color personalizada. Su constructor toma un entero para la opacidad (0-99) y una cadena hexagonal (por ejemplo, 00ff00 ).

Este es el método getFullHex :

public String getFullHex() { return ("0x" + hex); }

Cuando llamo a este método, me da esta NumberFormatException :

java.lang.NumberFormatException: For input string: "0xff0000"

No puedo entender lo que está pasando. ¿Alguien puede explicar?


El método parseInt solo acepta la parte numérica, no cualquier tipo de indicador "base" como "0x" para hexadecimal u "0" para octal. Úselo así

int decimal = Integer.parseInt("1234", 10); int octal = Integer.parseInt("1234", 8); int hex = Integer.parseInt("1234", 16);


Esto debería hacerlo:

String hex = "FA"; int intValue = Integer.parseInt(hex, 16);

Y si quieres generar una representación hexadecimal de un entero, utiliza

String hex = Integer.toHexString(12);


Integer.valueOf (cadena) asume una representación decimal. Debe especificar que el número está en formato hexadecimal, por ejemplo

int value = Integer.valueOf("00ff0000", 16);

Tenga en cuenta que Integer.valueOf (string, 16); no acepta un prefijo de 0x . Si su cadena contiene el prefijo 0x , puede usar Integer.decode ("0x00ff0000");