Zugreifen auf die Bytes einer Integer in C



  • Du kannst als Ahnungsloser überhaupt nicht beurteilen, was sinnvoll ist oder nicht, ebenso wie dein Lehrer es nicht kann. Trolle dich an deine Uni und halte die Klappe.



  • Printe schrieb:

    Zitat aus der Aufgabenstellung: Ergänzen Sie das folgende Programm mittels Zeigerarithmetik so, dass das Byte an der Stelle byteIndex im Array-Element array[arrayIndex] auf den Wert neuerInhalt gesetzt wird.

    Dann bleibt quasi nur die Lösung:

    *((char*)&(array[arrayIndex])+byteIndex) = neuerInhalt;
    

    Sieht aber total hässlich aus.


  • Mod

    Schichtarbyter schrieb:

    Sieht aber total hässlich aus.

    Ich finde das gut. Alles Wesentliche in einem einzigen Ausdruck.



  • Schichtarbyter schrieb:

    Dann bleibt quasi nur die Lösung:

    *((char*)&(array[arrayIndex])+byteIndex) = neuerInhalt;
    

    Ich würde das lesbarkeitshalber mit Zwischenschritten machen (int-Pointer, char-Pointer und dann schreiben) und die Optimierung dem Compiler überlassen, aber Prinzip ja, das wäre der Weg.



  • Printe schrieb:

    Ich würde das lesbarkeitshalber mit Zwischenschritten machen (int-Pointer, char-Pointer und dann schreiben)

    Oder man versteckt das Gewurschtel in ein Makro ...

    #define BYTE_PTR(addr,offset) (*((char*)&(addr)+(offset)))
    

    und dann

    // Setzen 
    BYTE_PTR (array[arrayIndex], byteIndex) = neuerInhalt;
    // lesen
    printf ("%d", BYTE_PTR (array[arrayIndex], byteIndex));
    

Anmelden zum Antworten