Forum Clubic

Transférer un Integer en UDP

: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 :slight_smile:
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) :stuck_out_tongue:

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 !