theneo55
Messages postés2Date d'inscriptionjeudi 19 avril 2007StatutMembreDernière intervention19 avril 2007
-
19 avril 2007 à 09:44
theneo55
Messages postés2Date d'inscriptionjeudi 19 avril 2007StatutMembreDernière intervention19 avril 2007
-
19 avril 2007 à 11:08
Bonjour à tous,
dans le projet que j'effectue je dois convertir un string (ex : 7e000100000107f) en un objet byte, sachant que 7e en byte devrait donner 126 mais je n'y arrive pas, parce qu'en fait il faut convertir en deux à deux (7e puis 00 puis 01 etc...)
J'ai bien écrit cette méthode, mais elle ne marche pas :
public byte[] ConvertStringToByte(String s)
{
byte[] b = new byte[s.length()/2];
int j = 0;
for(int i = 0; i < b.length; i++)
{
b[i] = Byte.parseByte(s.substring(j, j+2));
}
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 19 avril 2007 à 11:05
Salut,
c'est presque ça :P, tiens voilou un exemple (vite fait et à optimiser mais bon j'ai la flème)
la méthode :
public byte[] stringToBytes(String str, int nuple) {
int len = str.length()/2;//récupération de la taille
if((str.length() & 1) != 0) len += 1;//ajuste la taille si elle n'est pas paire
byte[] b = new byte[len];//creation du tableau
int j = 0;//index du tableau
for(int i = 0; i < str.length();){//pas d'incrémentation dans la boucle histoire de gérer le cas d'une taille impaire
if((i % nuple) == 0) {//on rempli n par n (soit pour ton cas 2 par 2)
int n = i + nuple; //juste pour ne pas répeter le calcul
String sub = "";//chaine à convertir
if(n < str.length()){ // si on est paire
sub = str.substring(i, n);
i += nuple; //incrementation avec un saut à i+n
}else{//si on est impaire
sub = str.substring(i); //enleve la fin
i++; //incrémentation normale
}
//convertion du couple string en byte (important il faut un radix à 16 vu que tu as de l'hexa)
b[j++] = Byte.parseByte(sub, 16);
}
}
//retourne le tableau
return b;
}
l'utilisation :
//chaine à convertir
String str = "7e000100000107f";
//récupération du tableau
byte [] bytes = stringToBytes(str, 2);
//affichage
for(byte b : bytes)
System.out.println(b);
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."