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
Version imprimable
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:
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:
1
2 String str = "2c" byte byt = (byte)Integer.parseInt(str, 16);
Pour ajouter une vérification :
Code:
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 ?