Je reprends ton exemple :
En fait mon entier au depart est 35160 si je le convertit en byte la valeur sera tronque puisque un byte ne fait que 8 bits et qu il en faut plus pour ecrire 35160.
Par contre il peut s ecrire sur 2 bytes, en fait je veux simplement une methode qui me permette de convertir cet int en un tableau de byte de longueur 2.
35160 en hexa ça fait 8958. Donc ton but est bien de mettre 89 dans la case 0 du tableau et 58 dans la case 1 ?
Je te propose de faire ça à l'aide de masques :
Pour récupérer le 89, tu fais un masque avec & FF00, et pour le 58, avec & 00FF.
Comment ça marche ? Simple, il suffit de tout mettre en binaire.
1 2
| 8 9 5 8 (hexa)
= 1000 1001 0101 1000 (binaire) |
Maintenant tu fais un & (l'opérateur ET binaire) sur 00FF, soit en binaire 0000000011111111, ça donne :
1 2 3 4
|
1000 1001 0101 1000 = 8958
& 0000 0000 1111 1111 = 00FF
= 0000 0000 0101 1000 = 0058 =88 (decimal), mais on s'en fout |
Pareil pour le masque avec FF00 (essaie, tu verras, ça donne bien 89).
Pour la conversion dans l'autre sens, ben c'est pas dur :
tonEntier = tonTab[1]*256 + tonTab[0];
Si tu comprends pas un truc, fais-moi signe.
Partager