Integer mit char zeiger speicern



  • Hallo,

    mit dem Zeiger ptr durchlaufe ich einen buffer. Eine Information in diesem buffer ist ein Integer - wie kann ich diesen Integer in ptr2 speichern?

    //...
      unsigned char *ptr; 
      unsigned int *ptr2; 
    
      ptr2 = *(unsigned int *)ptr;
    

    Ist es sinnvoller mit einem void ptr zu arbeiten? In dem Buffer befinden sich sowohl char Werte, die ich speichern möchte, als auch Integers.

    mfg
    Hans im Glück



  • Die Schreibweise wäre so:
    ptr2 = (unsigned int *)ptr;

    Aber damit zeigt aller Wahrscheinlichkeit nach ptr2 auf 3 Byte Datenmüll.
    Diese Vorgehensweise ist nicht empfehlenswert.

    Besser ist, den Puffer zu strukturieren:

    Speicherspar-Variante:

    #pragma pack(1)
    struct Buf
    {
    	 int i;
    	 char c;
    };
    #pragma pack()
    

    Die schnellere Variante:

    struct Buf
    {
    	 int i;
    	 char c;
    	 char dummy[3];
    };
    

    MfG,
    MFG


Anmelden zum Antworten