:hello:
Je cherche à transférer un entier en UDP (DatagramPacket, DatagramSocket).
Le problème est que DatagramPacket veut un tableu de byte, et un entier prend 4 bytes.
Comment faire pour passer cet entier en UDP ?
J’ai tenté ceci :
private static byte[] intToBytes(int i) {
byte[] dword = new byte[4];
dword[0] = (byte) ((i >> 24) & 0xFF);
dword[1] = (byte) ((i >> 16) & 0xFF);
dword[2] = (byte) ((i >> 8) & 0xFF);
dword[3] = (byte) (i & 0xFF);
return dword;
}
private static int bytesToInt(byte[] b) {
int ret;
ret = (b[0] << 24) & (b[1] << 16) & (b[2] << 8) & b[0];
return ret;
}
intToBytes à l’air de fonctionner, mais bytesToInt me retourne toujours 0.
Comment faire ?
Merci
Edité le 07/10/2007 à 15:14
avec un upcast?
ou un peu plus de variables?
int int1 = (int)(b[0]<<24)
int int = (int)(b[0]<<16)
…
ret = int1 & int2…
private static int bytesToInt(byte[] b)
{
int ret;
ret = (b[0] & 0xFF) << 24;
ret += (b[1] & 0xFF) << 16;
ret += (b[2] & 0xFF) << 8;
ret += (b[3] & 0xFF);
return ret;
}
Ca fait une semaine que j’ai commencé le Java, c’est un des premiers truc que j’ai fait (avec des méthodes pour avoir des primitifs signés)
tain, chui trop bete, faire un ‘&’ bit a bit va forcement donner 0
0000 & 0101 = 0000 :pfff: :riva:
il faut fair un ou logique
toutafé :oui: (pour le ou logique d’où le +)
Bah j’en avais jamais eu besoin :][quote=“jmgchouchou”]
tain, chui trop bete, faire un ‘&’ bit a bit va forcement donner 0
0000 & 0101 = 0000 :pfff: :riva:
il faut fair un ou logique
[/quote]
Comme je me sens con :paf:
merci aux deux !