bonjour, j'ai développé un serveur en c++ sous linux qui est interrogé
par des serveur c++... tout marche bien... mon probleme se situe coté
client en java...
en fait tout fonctionne bien... sauf que:
losque le serveur envois un "int" sur le réseau, il envois 4 byte (sizeof(int))
mes 4 byte sont récupéré coté java dans un byte[] qui fait 4 byte.
le probleme est le suivant: comment convertir un byte[] en int
et comment convertir un int en byte[]... pour que ca marche a tout les coup?
public int byte2int(byte[] desbyte)
{
return desbyte[0]+desbyte[1]*256+desbyte[2]*256*256+desbyte[3]*256*256*256;
}
marche tres bien mais pas pour le chiffre 1000... qui est codé 00 00 03 E8
et donc desbyte[0]=E8 qui correspond a -24 donc ca foire...
pour l'autre sens j'ai deja fait ceci qui apparement fonctionne:
public byte[] int2byte(int valeur)
{
byte[] retour=new byte[4];
Integer conv=new Integer(valeur%256);
retour[0]=conv.byteValue();
conv=new Integer((valeur%(256*256))/256);
retour[1]=conv.byteValue();
conv=new Integer((valeur%(256*256*256))/(256*256));
retour[2]=conv.byteValue();
conv=new Integer(valeur/(256*256*256));
retour[3]=conv.byteValue();
return retour;
}
donc pour la deuxiemme si vous avez plus simple, je suis preneur...
pour la premier... je me contenterais d'un truc qui marche... car la je sature.
moi, le seul, l'unique, ZinZin
