Construction Set esp Datei erzeugen - Wie fügt man Zahlen ein?

Cyrus

Fremdländer
Hi Community,
ich schreibe zur Zeit an einem Programm, das eine .esp Datei erzeugen soll.
Allerdings habe ich Probleme damit Zahlen - bspw. 415 - korrekt in die Datei zu schreiben.

415 würde in der esp Datei zu 9F010000 werden. Umwandeln in Hex Code ist auch nicht das Problem.
Das Problem das ich habe ist, dass alles was ich speichere immer in der "Übersetzung" im Hex editor angezeigt wird und nicht im Offsetbereich.

Ich hoffe einer von euch kennt sich damit vielleicht etwas besser aus oder hatte das Problem auch schon einmal und kann mir einen Tipp geben.

Grüße
Cyrus
 
ich schreibe zur Zeit an einem Programm, das eine .esp Datei erzeugen soll.
Respekt, was genau hast Du vor?

Wenn Du allerdings schon beim Schreiben scheiterst, bin ich etwas verunsichert.

Dein Problem: Du möchtest den Hex-String 48616C6C6F in die Datei schreiben. Er landet aber in der Übersetzung und nicht im Hex-Bereich.
Logische Schlussfolgerung: 48616C6C6F in einen normalen String konvertieren(ergibt Hallo) und diesen in die Datei schreiben.
Dann steht in der Übersetzung logischerweiße Hallo und im Hex-Bereich 48616C6C6F.
 
Respekt, was genau hast Du vor?

Ich beschäftige mich in meiner Diplomarbeit mit der Erzeugung von Stories und will die erzeugten Stories in Oblivion umsetzen. Deswegen versuch ich das mein Programm direkt die esp's schreibt statt die Stories dann per Hand im CS umzusetzen.

Aber irgendwie scheiter ich im Moment an den Zahlen. -.-

Wenn ich die Zahl 310872 in Hex umwandel ergibt das 4BE58. Und egal was ich mit dem Hexstring mache er steht nur in der Übersetzung.

Code:
char* resHex = new char();
sprintf(resHex, "%08x", 310872);
cout << resHex; // 0004BE58
...
outputStream.write(resHex,sizeof(resHex) *2);

 // führt zu
 Offset(d)   00 01 02 03 04 05 06 07
 00000000  30 30 30 34 62 65 35 38        0004be58

//ziel
 Offset(d)   00 01 02 03 
 00000000  00 04 be 58



Wenn ich vorher resHex zu einem String mache ändert das auch nichts am Ergebnis. :?:

Irgendwie hab ich in letzter Zeit soviel rumprobiert das ich langsam gar nicht mehr Durchblick. :roll:
 
Wenn ich vorher resHex zu einem String mache ändert das auch nichts am Ergebnis.
Wie jetzt?
Wenn Du direkt 310872 in die Datei schreibst ändert sich nix?
Meiner Meinung nach müsste dann in der Übersetzung 310872 stehen und im Hex-Bereich der entsprechende Hexstring.
 
Code:
string resHex = "" + 310872;
outputStream.write(resHex.c_str(),sizeof(resHex.c_str()) *2);

//führt zu
02 5A D8 1C DC 26 CF 25       .ZØ.Ü&Ï%


char* resHex = new char();
sprintf(resHex, "%08u", 310872);
//führt zu
30 30 33 31 30 38 37 32         00310872
Hab jetzt im 010 Editor mal ein bisschen rumprobiert. Wenn ich mir die Daten die in 0004BE58 (Eigentlich ja der Hexcode für 310872) anschaue dann steht da nirgends 310872. Damit ich 310872 als Datenwert angezeigt bekomme müsste ich im Hexbereich ganz komische Zeichen haben. Irgendwie versteh ich langsam nur noch Bahnhof. ^^
Hab mal Screenschots gemacht.

http://img814.imageshack.us/i/screenshot2l.jpg/

http://img686.imageshack.us/i/screenshot3mo.jpg/

screenshot2l.jpg
screenshot3mo.jpg
 
Habs gelöst, eine Lösung werde ich nachreichen sobald ich mehr Zeit habe bzw. evtl eine kleine Anleitung wie man esp Dateien erzeugen kann. Kommt drauf an wie ich weiterkomm.

Grüße
Cyrus

PS: /closed