Die Umwandlung von Objekt zu byte array und zurück in java
Ich habe zwei Klassen: TcpPacket und IpPacket. Die tcpPacket gespeichert werden soll in das Feld des ip-Pakets. Wie kann ich zuverlässig konvertieren tcpPacket-Objekt ein byte-array, so dass ich speichern Sie es in der IpPacket Datenfeld? Und nach Erhalt das Paket auf der anderen Seite, wie zuverlässig konvertiert es zurück in ein Paket-Objekt?
public static final class TcpPacket {
int source;
int destination;
public Packet( int source, int destination ) {
this.source = source;
this.destination = destination;
}
public String toString() {
return "Source: " + source + ", Dest: " + destination;
}
}
public static final class IpPacket {
byte[] data;
IpPacket( byte[] data ){
this.data = data;
}
}
TcpPacket tcpPacket = new TcpPacket( <someint>, <someint> );
//the following doesn't work because tcppacket is not a byte array.
IpPacket ipPacket = new IpPacket( tcpPacket );
Wie wird das normalerweise gemacht?
Dank Maricruzz
Mögliche Duplikate stackoverflow.com/questions/5837698/...
siehe stackoverflow.com/questions/3736058/...
siehe stackoverflow.com/questions/3736058/...
InformationsquelleAutor Maricruzz | 2014-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Arbeit sollte nur gegossen, das Objekt Ihrer Klasse nach dem Erhalt von dem serialisieren/Deserialisieren-Funktion.
InformationsquelleAutor BaN3
Ich würde gerne bieten Ihnen die manuelle Ansatz, um serialising Ihrer Klasse.
Hinzufügen eines
toByteArray
und statischefromByteArray
Methoden würden Sie bekommen, was Sie wollen, und bietet die folgenden Vorteile:Wenn du eine Serialisierung komplexer Daten-Strukturen, würde ich sehr stark empfehlen, die Sie wählen, ein gut etabliertes Serialisierung Bibliothek wie google protocol buffers (meine persönliche Waffe der Wahl) oder eine der vielen anderen, die nicht darunter leiden, Sicherheits-Alptraum, der Java-Serialisierung.
InformationsquelleAutor Gareth Davis