Conversion byte[4] en int - Java - Programmation
Marsh Posté le 10-01-2005 à 11:34:51
Je fait pas de java mais voila ce que ça donnerai en C
int a=0;
char b[4] = ... ;
for(int i=0; i<4; i++)
{
a |= b[i]<<((3-i)*8);
}
ou encore
a = b[3]<<24 | b[2]<<16 | b[1]<<8 | b[0];
Marsh Posté le 10-01-2005 à 15:47:10
Bon alors voilà :
Pour décomposer un int en tableau de 4 bytes :
Code :
|
Pour recomposer l'int :
Code :
|
Dans la premiere partie, j'ai volontairement laissé des int ... alors que j'ai besoin d'avoir des bytes.
Le problème est qu'un byte est codé entre -128 et +127.
donc si un de mes 4 bytes de mon int est > 127 ... je passe en négatif et je ne sais pas comment faire.
Il semblerait qu'en ajoutant bit à bit (2e code), le signe devrait se retrouver sur le bit de poids fort du 1er byte [0], mais il n'en ait rien.
voilà le code complet que j'utilise pour tester cette partie... Si qqu'un se sent de taille de me donner un coup de main ...
Code :
|
Donc, en fait, tant qu'on passe en args[0] un entier dont aucun des 4 bytes ne dépasse 127 ... tout va bien ... sinon, c'est pas cool !
merci de votre aide.
Rafax
Marsh Posté le 10-01-2005 à 15:52:06
https://opensvn.csie.org/traccgi/lu [...] ction.java
tout en bas, les 2 dernieres methodes statiques
Marsh Posté le 10-01-2005 à 16:17:29
Les unions ca n'existe pas en Java ?
union {
unsigned char b[4] ;
int a ;
}
Il faut faire attention à l'architecture, mais c'est l'idée.
Marsh Posté le 10-01-2005 à 16:20:23
C'est exactement ce que je voulais.
En fait, on code bien sur 4 bytes (4x1octet)
C'est mon décodage qui n'était pas bon...
Merci encore,
Rafax
Marsh Posté le 10-01-2005 à 11:09:17
Bonjour à tous,
J'ai besoin de convertir un int en byte[4] puis de reconvertir ce byte[4] en int.
Voila ce que je fais pour int => byte[4] : Qu'en pensez vous ?
Par contre, je ne sais pas comment faire pour faire le chemin inverse byte[4] => int ... si vous aviez une idée ...
merci d'avance,
Rafax