Aus Speicheradressen Endian folgern



  • Guten Abend,

    ich habe ein Char Array in dem ein Wort gespeichert wird.
    Wenn ich die Speicheradresse von dem 1. Buchstaben und dem 2. vergleichen, kann ich daraus schließen vor welchem Endian ich sitze?
    Folgt aus 1. Buchstabenadresse < 2. Buchstabenadresse, dass ich es mit einem BigEndian zu tun habe?



  • nein. endianness kannst du nur aus mehrbytigen zahlen schliessen.

    test:

    unsigned long int foo = 0x1a2b3c4d;
    printf("%02x %02x %02x %02x %02x %02x %02x",
    	*((unsigned char*)(&foo)-3),
    	*((unsigned char*)(&foo)-2),
    	*((unsigned char*)(&foo)-1),
    	*((unsigned char*)(&foo)-0),
    	*((unsigned char*)(&foo)+1),
    	*((unsigned char*)(&foo)+2),
    	*((unsigned char*)(&foo)+3));
    

    probier das mal aus. es werden die 4 bytes ausgegeben, in aufsteigenden adressen.

    auf meinem x86 kommt das raus:
    "00 00 00 4d 3c 2b 1a"


Anmelden zum Antworten