Seite 1 von 1

Java Hass

Verfasst: 15.02.2003 23:25
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;	
	}

Re: Java Hass

Verfasst: 16.02.2003 14:57
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...

Verfasst: 16.02.2003 17:15
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!!

Verfasst: 17.02.2003 08:48
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();