Convertion de type

Résolu
Batbihirulau Messages postés 5 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 5 décembre 2007 - 4 déc. 2007 à 20:58
 Utilisateur anonyme - 5 déc. 2007 à 21:00
Bonjour,

Je recherche le moyen de convertir les octets en entiers...
Je m'explique:
Je dispose d'une variable de type byte[]. Le but est de recupere dans une variable de type int chaque octet en clair.
Exemple: si t[5]={0x34,0x76,0x03,0x99,0x13}, je veux pouvoir avoir
a=34, b=76, c=3, D=99, e=13 avec a,b,c,det e de type int.
J'ai tente d'utiliser Integer.toString(z[i],16) pour une convertion en string, mais ca ne convient pas.
Est ce qqn peut me tuyauter?

Batbihirulau

5 réponses

Utilisateur anonyme
5 déc. 2007 à 21:00
Je comprends mais un "bleu" doit apprendre à se servir de la documentation de l'API de Java, c'est incontournable. Même un bouquin de 350 pages ne peut pas explorer tous les aspects de Java. A l'université et à l'IUT, on nous a appris à prendre ce genre de réflexe et je te conseille vivement de t'y mettre. Un ouvrage d'introduction à Java peut te permettre de saisir la syntaxe du langage et les concepts mais c'est insuffisant pour te dire quelles classes utiliser en fonction de tes besoins. D'ailleurs, si tu avais utilisé la documentation de Java correctement, tu n'aurais même pas eu besoin de venir ici. Bon courage.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
3
Utilisateur anonyme
4 déc. 2007 à 23:12
0x34 ça veut dire que c'est de l'hexadécimal, tu mélanges tout. a= 0x34 = 3*16 + 4 * 1 = 52 (en base 10)
Si tu as un tableau de type byte, le signe est sur un bit et les 7 autres bits codent le chiffre. Tu fais alors directement :
byte[] t=new byte[]{0x34,0x76,0x03,0x99,0x13};
int[] int_tab = new int[t.length];
for(int i =0;i<t.length;i++)
      int_tab[i]=t[i];

Dans ton tableau de "byte" tu pourrais aussi mettre directement byte[] t=new byte[]{34,76,3,99,13};
Ton esprit est confus j'ai l'impression.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
Batbihirulau Messages postés 5 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 5 décembre 2007
5 déc. 2007 à 18:09
Effectivement, les elements de mon tableau byte[] sont des valeurs en hexa.
Mais le but n'est pas de recuperer les equivalents en base 10 ou autre.
Les elements du tableau seront compris entre 0x00 et 0x99. Ca, c'est le point de depart. Le but est de pouvoir afficher (dans la console par exemple) les digits hexa en nombre entier: 0x13->13, 0x99->99.
Autre exemple encore plus concret:
si t[5]={0x18,0x21,0x13,0x99,0x10}, me servira a en deduire qu'il est 21heure 13minutes car "t[1]=21" et "t[2]=13"(les autre valeurs ne sont pas utilisées).
Est ce que j'eclaire ou j'obscurcie???

Batbihirulau
0
Utilisateur anonyme
5 déc. 2007 à 19:34
D'abord, si tu prends les éléments entre 0x00 et 0x99, ça veut dire que tu auras aussi dans ton tableau l'élément 0x1A. Je ne comprends pas pourquoi tu veux te servir de valeurs hexadécimales. La fonction Integer.toHexString(int i) te renvoie la chaîne qui représente en base 16 l'entier que tu lui passes en base 10. Je ne sais pas si ça peut te servir...
"0x13->13"?? Utilise le printf de Java 6 avec les mêmes options de formatage qu'en C et tu afficheras ta valeur en hexadécimal.

"si t[5]={0x18,0x21,0x13,0x99,0x10}, me servira a en deduire qu'il est 21heure 13minutes car "t[1]=21" et "t[2]=13""
Ca c'est complètement faux. t[1]=21 en base 16 =2*16 + 1 *1 = 33 en base 10
Mais si tu veux afficher 21 quand t[1]=0x21, alors fais ainsi:
System.out.println(""+Integer.toHexString(t[1]));

Le plus simple reste de mettre directement des valeurs décimales dans ton tableau :
byte[] t=new byte[]{0x18,0x21,0x13,0x99,0x10};

Enfin, jette un coup d'oeil dans la documentation de Java, c'est le premier réflexe à avoir quand tu programmes :
http://java.sun.com/javase/6/docs/api/

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Batbihirulau Messages postés 5 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 5 décembre 2007
5 déc. 2007 à 20:54
OK, la solution "Integer.toHexString" est exactement ce que je cherchais. MERCI.
La doc java etant plutot "touffue", il n'est pas toujours facil pour un 'bleu' de s'y retrouver. J'utilise plus facilement l"introduction a java" d'O'Reilly.

Batbihirulau
0
Rejoignez-nous