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*


Anmelden zum Antworten