Ich verstehe das Problem nicht ganz. Wenn also 3d03 in der Datei steht,
benutzt du strSample[] = "3D03". Wenn in der Datei der ASCII-Wert von 3d03 steht, wandelst du 3d03 in den ASCII-Wert von 3d03 um. Ob es dazu eine direkte Möglichkeit gibt weiss ich nicht, gestaltet sich aber denoch nicht als sonderlich schwierig. Du wandelst die Hexadezimale Zahl 3d03 zuerst in ihre Dezimalzahl um (Taschenrechner wenn es immer 3d03 bleibt, oder @Runtime). Das kannst du folgendermassen machen:
char strSample[] = "[U]0x[/U]3D03"; // WICHTIG: das '0x' nicht vergessen
// wir nutzen die Funktion strtol
char *cpEnd; // erklär ich später
long l = strtol(strSample,&cpEnd,0); // die Konvertierung
l behinhalted nun den Dezimalwert von strSample. Der Pointer cpEnd wird von
der Funktion strtol auf den ersten non-numeric char in strSample gesetzt.
Das kann zur Fehlererkennung genutzt werden, oder einfach um zu wiessen
wo der Konvertierungsvorgang aufgehört hat. Parameter 3 ist der Radix, wenn
er auf 0 steht, versucht strtol automatisch zu ermitteln, welche basis die Zahl
die im String steht hat. Wenn wir also 0x3D03 benutzen, erkennt strtol anhand
des 0x das der Radix 16 (Hexadezimal) ist.
(l sollte noch auf LONG_MAX und LONG_MIN geprüft werden, um Überlauffehler auszuschliessen).
Nun kann man auf die schmutzige Art und weisse die Dezimalzahl l einem String
zuweisen:
char strSample[] = l; // böse, aber funktioniert
Jetzt kannst du nach dem ASCII-Wert von 0x3d03 in deiner Datei suchen.
Theoretisch gibt es noch eine einfachere Methode:
strSample[] = "3D03";
unsigned int i;
sscanf(strSample,"%2X",&i);
i beinhaltet nun den Dezimalwert von 3d03, und man kann ihn wie gehabt um-
wandeln. Da jedoch die scanf-Familie sehr Fehleranfällig ist und in vielen
Situationen unerwartete Ergebnise liefert, finde ich persönlich die strtol-
Methode besser.