Donc, en Java, vous savez comment déclarer des entiers comme celui-ci:
int hex = 0x00ff00;
Je pensais que vous devriez pouvoir inverser ce processus. J'ai ce code:
Integer.valueOf(primary.getFullHex());
où primaire est un objet d'une classe de couleur personnalisée. Son constructeur prend un entier pour l'opacité (0-99) et une chaîne hexadécimale (par exemple 00ff00
).
Voici la méthode getFullHex
:
public String getFullHex() {
return ("0x" + hex);
}
Quand j'appelle cette méthode, cela donne mon NumberFormatException
:
Java.lang.NumberFormatException: For input string: "0xff0000"
Je ne comprends pas ce qui se passe. Quelqu'un peut-il expliquer?
Est-ce que cela vous aidera?
Integer.parseInt("00ff00", 16)
16
Signifie que vous devez interpréter la chaîne en 16 (hexadécimal). En utilisant 2
Vous pouvez analyser un nombre binaire, 8
Signifie octal. 10
Est la valeur par défaut et analyse les nombres décimaux.
Dans votre cas, Integer.parseInt(primary.getFullHex(), 16)
ne fonctionnera pas en raison du préfixe 0x
Ajouté par getFullHex()
- débarrassez-vous et tout ira bien.
Integer.valueOf (string) suppose une représentation décimale. Vous devez spécifier que le nombre est au format hexadécimal, par ex.
int value = Integer.valueOf("00ff0000", 16);
Notez que Integer.valueOf (chaîne, 16); n'accepte pas un préfixe de 0x
. Si votre chaîne contient le 0x
préfixe, vous pouvez utiliser Integer.decode ("0x00ff0000");
Essayez d'utiliser la méthode de décodage:
Integer.decode("0x00ff00");
DecodableString:
Vous pouvez en lire plus ici https://docs.Oracle.com/javase/7/docs/api/Java/lang/Integer.html#decode (Java.lang.String)
La méthode parseInt accepte uniquement la partie numérique, pas tout type d'indicateur "de base" tel que "0x" pour hexadécimal ou "0" pour octal. Utilisez-le comme ça
int decimal = Integer.parseInt("1234", 10);
int octal = Integer.parseInt("1234", 8);
int hex = Integer.parseInt("1234", 16);
Cela devrait le faire:
String hex = "FA";
int intValue = Integer.parseInt(hex, 16);
Et si vous souhaitez générer une représentation hexadécimale d'un entier, utilisez
String hex = Integer.toHexString(12);
Est-ce que cela fonctionnerait?
Long.parseUnsignedLong(value, 16);