ein byte aus dem speicher lesen
-
ich möchte sagen wir mal zehn byte aus dem speicher auslesen.
die addresse im speicher weiss ich.den wert des bytes möchte ich gerne als hex-zahl,
bzw. den ASCII wert davon ausgeben.in etwa so wie in einem hex-editor.
also in etwa sowas:
// puffer für hex und ASCII wert wchar_t* hexBuf = new wchar_t[1]; wchar_t* asciiBuf = new wchar_t[1]; // speicheradresse und zeiger dorthin int memoryAddress = 123456; void* p = &memoryAddress; for (int i = 0; i<10; i++) { // füllen der puffer _snwprintf(hexBuf, 1, L"%02x", p ); _snwprintf(asciiBuf, 1, L"%02x", p ); // <---- wie muss ich das für ascii füllen?? // zeiger auf das nächste byte setzen p++; } delete [] hexBuf; delete [] asciiBuf;woran es noch hapert ist schonmal folgendes:
1.der compiler meckert wenn ich den zeiger weitersetzen möchte p++ (unkown size)
(geb ich ihm ja auch recht, aber wie macht man es richtig?)2.ausgeben wollte ich eigentlich immer nur den wert für ein hex-zeichen also z.b e3
im puffer steht aber sowas wie e???????3.wie bekomme ich den ascii wert aus dem byte?
-
sorry,
die frage ist eigenlich nicht mfc, und hier wohl falsch. eher was für c++ forum
-
Dieser Thread wurde von Moderator/in estartu_de aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Viel Erfolg hier.

-
wie wärs, wenn du statt void* char* verwendest? char ist genau 1 byte groß
-
hatte ich auch schon.
char* p = (char*)&memoryAddress;anstatt von
void* p = &memoryAddress;dann meckert er mir auch nicht mehr beim p++
aber die anderen problem bleigen noch bestehen
-
Hallo,
meinst du sowas in der Art:int main() { const char* lit = "Hallo C++!"; // von dieser Adresse 10-Bytes lesen for(unsigned int i = 0 ; i < strlen(lit); ++i) cout << "hex = " << hex << static_cast<int>(*(lit + i)) << // als hex "; ascii = " << dec << static_cast<int>(*(lit + i)) << endl; // als ascii return 0; }??
Caipi
-
dein beispiel hat mir schonmal einen weiteren fehler gezeigt
aus
int numOfBytes = _snwprintf(hexBuf, 2, L"%02x", p );wurde
int numOfBytes = _snwprintf(hexBuf, 2, L"%02x", *p );allerdings steht in meinem buffer immer noch sowas wie "e0??????" und ich will aber wirklich nur die ersten beiden zeichen.
und die brauch ich dann auch noch in einem wchar_t*