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