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");
Intenta usar el método de decodificación:
Integer.decode("0x00ff00");
DecodableString:
- Signopt DecimalNumeral
- Signopt 0x HexDigits
- Signopt 0X HexDigits
- Signopt # HexDigits
- Signopt 0 OctalDigits
Puede leer sobre esto aquí https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#decode(java.lang.String)