Endianness



  • Habe mich in letzter Zeit ein wenig mit Endianness beschäftigt. Habe bis jetzt immer nur auf Intel programmiert und mir steht auch kein anderer Rechner zur verfügung um mein "Problem" selbst auszuprobieren.

    Habe schon öfters folgenden Code verwendet

    short int a = 32;
    char c = (int)a; // nehme mal an das sollte auf beiden Architekturen das gleiche 
                     // Ergebnis bringen da der compiler den cast macht
    

    oder auch

    short int a = 32;
    char c = *((char*)&a);  // hier sage ich ich möchte das char an der selben Adresse wie das int
    

    Das Ergebnis war bis jetzt immer das immer das selbe.
    Bin jetzt zu dem Schluss gekommen dass die 2. Variante böse ist. Aber irgendwie geht das nicht in mein kleines Hirn hinen. ( suche Bestätigung ).
    Kurt



  • Little endian (intel)

    short int a = 32;
    // am speicher wo a liegt steht: 0x20 0x00
    char c = *((char*)&a);
    // nach c wird das erst byte kopiert, in c steht jetzt also 0x20 (32)
    

    Big Endian

    short int a = 32;
    // am speicher wo a liegt steht: 0x00 0x20
    char c = *((char*)&a);
    // nach c wird das erst byte kopiert, in c steht jetzt also 0x00
    


  • Danke. Das wollte ich hören.
    Kurt


Anmelden zum Antworten