Salut ,
J'ai une chaîne ( String ) str = "2c" (resp str1 ="0x2c") . je veux obtenir un byte ( non tableau de byte) tel que byt = 0x2c (resp str2 = 0c2c ) .
Merci
Salut ,
J'ai une chaîne ( String ) str = "2c" (resp str1 ="0x2c") . je veux obtenir un byte ( non tableau de byte) tel que byt = 0x2c (resp str2 = 0c2c ) .
Merci
salut,
je ne sais pas si je comprends bien ta question, mais j'utiliserais simplement la methode Integer::parseInt appliquee a String.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // string en hexa d'ou le prefix 0x est vire String s= "fa"; Integer i = Integer.parseInt(s, 16); // rien n'empeche apres de voir les methodes de conversion de Integer au //type Byte par exemple. //Byte b = i.byteValue(); System.out.println(s + " " + i );
Il y a plus simple :
Mais attention, ce code ne cherche pas à détecter les erreurs. Il suppose que la chaîne fait bien deux caractères, et que ce sont bien deux chiffres hexadécimaux. Si ce n'est pas le cas, les résultats sont absurdes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String str = "2c" byte byt = (byte)Integer.parseInt(str, 16);
Pour ajouter une vérification :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 String str = "2c" if(!str.matches("[a-f0-9]{2}") { throw new IllegalArgumentException("'" + str + "' is not valid hexadecimal byte"); } byte byt = (byte)Integer.parseInt(str, 16);
What ?
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager