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 ?
Partager