BigInteger DataInputStrea

Status
Nicht offen für weitere Antworten.
T

_thomas_

Gast
Hallo zusammen

Steh grad auf der Leitung. Ihr könnt mir da sicher schnell weiterhelfen.

Ich möchte eine BigInteger (targetToken) in einer Message von einem client zu einem andere schicken.
Hier ein Beispiel wie es gelöst ist fals targetToken ein int-value wäre. Wenn ich nun einen BigInteger senden möchte, stehe ich im moment bei der deserialize Methode an.

Serialize der Message für int-values:
Code:
	public void serialize(MoveMessage message, DataOutputStream dos)
			throws IOException {
		dos.writeInt(message.getTargetToken());
	}

Serialize der Message für BigInteger
Code:
dos.write(message.getTargetToken().tyByteArray());


Und deserialize der Message für int-values:
Code:
	public MoveMessage deserialize(DataInputStream dis) throws IOException {
		int targetToken = dis.readInt();
		return new MoveMessage(targetToken);
	}

Wie bekomme ich nun den BigInteger aus dem DataInputStream?


Danke und Gruss

Thomas
 
S

SlaterB

Gast
mir scheint, dass die DataStreams nicht für byte[] gedacht sind,
du weißt als Sender nicht, wie viele bytes es werden und willst diese Zahl auch sicher nicht vorher manuell rüber schicken,
der Emfänger sieht dann nur bytes ohne Anfang und Ende

wandle stattdessen den BigInteger in String um und verschicke diesen + "\n" am Ende,
den String kannst du auch wieder auslesen und einem Konstruktor von BigInteger übergeben,

für beliebige Serializable-Objekte bieten sich auch ObjektOutputStream/ ObjectInputStream an,
dann könntest du vielleicht die ganze Message in einem Stück verschicken
 
T

_thomas_

Gast
Danke für deine Antwort.

Die Idee mit dem String hatte ich auch, dachte es gäbe vielleicht noch eine bessere Lösung. Für was soll ich denn noch ein "\n" mitschicken?
 
S

SlaterB

Gast
im DataInputStream habe ich nur readln() gesehen, das braucht ein \n
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben