ich verschachtelte Sprache „C“ Datenstrukturen wie diese Deserialisieren:einen Byte-Stream in eine Java-Klasse
struct xyz {
char a[256];
char b[1024];
} XYZ;
struct abc {
unsigned char dat1[1024];
int dat2;
} ABC;
struct def {
int x;
int y;
int z;
} DEF;
struct tot {
XYZ p1;
ABC p2[45];
DEF p3[17];
} TOT;
TOT tot;
Nach TOT bevölkern, ich schreibe es so in eine Datei im C-Programm.
fwrite ((char *) & tot, 1, sizeof (TOT), Datei);
Jetzt muss ich die gleiche Datei wieder mit einem JAVA-Programm lesen und die gleichen C-Datenstrukturen wie entsprechende JAVA-Klassen für ANDROID neu erstellen.
Also mache ich Klassen, die oben wie die C-Strukturen aussehen, enthalten diese Klassen nur die Datenelemente und keine Methoden wie diese
class XYZ {
byte a[]=new byte[256];
byte b[]=new byte[1024];
} XYZ;
class ABC {
byte dat1[1024];
int dat2;
};
class DEF {
int x;
int y;
int z;
};
class TOT {
XYZ p1;
ABC p2[45];
DEF p3[17];
};
ich weiß, gibt es einige Syntaxfehler in den Klassen oben, aber ich hoffe, dass Sie bekomme eine Vorstellung.
Also wie kann ich alle Bytes aus der Datei lesen und diese verwenden, um alle diese verschachtelten JAVA-Klassenobjekte zu erstellen, wie Sie oben sehen, um die ursprünglichen C-Strukturen an der Spitze zu entsprechen?
Ich denke, es ist wie eine De-Serialisierung in JAVA (Android), aber der Serializer war ein C-Programm mit fwrite.
Es wäre so schwer, die Bytes einzeln aus der Datei zu lesen und die JAVA-Klassenobjekte manuell einzugeben, und dabei die verschiedenen Größen der Datentypen und Byte-Reihenfolgen von Windows C zu JAVA zu berücksichtigen Gibt es einen schnelleren Weg?
Leider sind die binären Daten, die bereits in die Datei mit C geschrieben und können nicht geändert werden, so hat ich ein Java-Programm zu schreiben, es wieder zu bekommen und diese Klasse Objekte daraus zu machen.
vielen dank für alle ideen!
Bad Wahl eines Serializer. Verwenden Sie einen geeigneten, der ein plattformunabhängiges Format erzeugt. C erzwingt kein bestimmtes Layout für solche Strukturen, abgesehen von einigen sehr grundlegenden Anforderungen. – Olaf
Ja stimmt, es ist nicht plattformunabhängig, aber es ist sehr schwer das Dateiformat im Moment zu ändern. – programmer3
Wie mache ich einen geeigneten plattformunabhängigen Serializer in C, der in JAVA deserialisiert werden kann, um die verschachtelten JAVA-Klassen neu zu erstellen? – programmer3