Java Hass

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Teapot

Java Hass

Beitrag von Teapot »

Hallo Ich wollte aus 4 Bytes einen Int wert machen aber es funktioniert nicht so irgendwie ??
Ich weiss nicht so recht wie das gehen soll , ich habs so probiert kommt aber nur mist bei raus.. ? :

Code: Alles auswählen

	int ReadInt(String packet, int index )
	{
		byte[] bytes = new byte[4];	
		
		bytes[0] = packet.getBytes()[index + 0];
		bytes[1] = packet.getBytes()[index + 1];
		bytes[2] = packet.getBytes()[index + 2];
		bytes[3] = packet.getBytes()[index + 3];
		
		DataInputStream dinput = new DataInputStream( new ByteArrayInputStream(bytes) );		
		int integer;
		
		try
		{	
			integer = dinput.readInt();
		}	
		catch( IOException e )
		{
			// dann eben nid
			integer = -1;
			System.out.println("Exception in ReadInt32()");
		}
			
		System.out.println(integer);
		return integer;	
	}
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Java Hass

Beitrag von Pyramide »

Teapot hat geschrieben:es funktioniert nicht so irgendwie ??
kommt aber nur mist bei raus.. ?
Kannst du das vielleicht genauer beschreiben? Welches Ergebnis erwartest du, welches erhältst du stattdessen? Bei welchen Eingangsdaten?

PS: Wofür benötigst du die Umwandlung denn? Vielleicht gibt es dafür ja eine einfachere Methode...
Gast

Beitrag von Gast »

Ich versuche ein empfangenes udp paket zu lesen nach einem vorgegebem Muster. Zuerst kommt ein String dann ein Integer32 und danach ein Float32. Naja meine ReadInt funktion schmeisst immer nur wirres zeug raus , jedenfalls nicht das erwartete ergebnis!!
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Du wandelst also die Bytes aus dem Paket in einen String um, liest daraus wieder bytes, die du dann in ints konvertierst? Warum denn so kompliziert? Nimm doch direkt einen Data[Input|Output]Stream ohne den Umweg über String:

Sender:

Code: Alles auswählen

    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
    DataOutputStream dataOut = new DataOutputStream(byteOut);
    dataOut.writeUTF("Hallo Welt");
    dataOut.writeInt(12345);
    dataOut.writeFloat(12345.6789f);
    dataOut.close();
    byte[] packet = byteOut.toByteArray();
    //packet senden...
Empfänger:

Code: Alles auswählen

    //packet empfangen...
    DataInputStream dataIn = new DataInputStream(new ByteArrayInputStream(packet));
    System.out.println("Ein String: " + dataIn.readUTF());
    System.out.println("Ein Integer: " + dataIn.readInt());
    System.out.println("Ein Float: " + dataIn.readFloat());
    dataIn.close();
Antworten

Zurück zu „Coding & Technik“