Dipl. User mit summa cum laude
Ok, die Ausgabe ist problematisch, wie ich gerade sehe ...
Normalerweise sollte nach zwei hex Ziffern ein leerzeichen kommen.
Aber ich hab den Fehler gefunden ^^
Schreibe bitte statt char data;
unsigned char data;
C hat sich da etwas komisch ...
Gut ...
also wir lesen die Datei gerade byteweise ein.
Bei Binaerdaten ist immer das Problem, dass man nicht weiss, wie die Datei aufgebaut ist. Datentypen koennen unterschiedliche Laengen haben. Einfache Buchstaben haben in der Regel 1 oder 2 byte, Zahlen haben je nach Zahlenbereich 1 bis 4 byte. Graphiken und Sounds und Programme bestehen auch nur aus auseinanderfolgenden Zahlen oder Buchstaben. Wie genau diese aufgebaut sind, ist vom Datenformat abhaengig, oder vom Kompressionsalgorithmus, und vielem anderen.
Mit fread (puffer, groesse in byte, 1, datei); liest man aus einer Datei eine bestimmte Anzahl von Bytes in einen Puffer.
Die Frage ist nun, wie die Datei aufbetaut ist. Und das ist die Hauptarbeit, das herauszufinden. Du musst dir einen Hexeditor besorgen (google) und dich kundig machen, wie die Dateien der PSX aufgebaut sind (google). Wenn du dazu nichts findest, musst du selber mit dem HexEditor die Binaerdateien ansehen und versuchen irgendwelche strukturen zu erkennen.
Wenn du dann einmal weisst wo und wie welche daten in den Binaerdateien stehen, musst du selbige ueber ein C++ Programm auslesen und in ein Datenformat speichern, welches du lesen kannst (z.B. BMP). Dazu musst du dich (mit google, Wikipedia) kundig machen, wie deine Ausgabeformate aufgebaut sind.
Mit
FILE *output = fopen("dateiname","w");
oeffnest du eine Datei zum schreiben, mit
fwrite(puffer, size, 1, datei);
kannst du dann in eine datei schreiben.
Das ist im Grunde mehr oder weniger alles, was du von Seite C/C++ wissen musst. Wie das lesen und schreiben in und aus Puffern funktioniert, kann ich dir gerne ebenfalls erklaehren, wenn du eine konkrete Struktur einlesen / ausgeben willst.
Geändert von Ineluki (20.08.2007 um 22:32 Uhr)