Convertir un String en Byte

theneo55 Messages postés 2 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 19 avril 2007 - 19 avril 2007 à 09:44
theneo55 Messages postés 2 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 19 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));
            }
           
            return b;
        }

Si vous pouviez m'aider , ce serait sympa,

En vous remerciant de vos réponses,

@+

2 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
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 ..."

WORA
0
theneo55 Messages postés 2 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 19 avril 2007
19 avril 2007 à 11:08
je vais essayer sa de suite .

en tout cas merci d'avance
0
Rejoignez-nous