Christoph Gärtner: C - casten

Beitrag lesen

Abend.

Ich bin da vielleicht nicht der Kompetenteste, was von x86 abweichende Systeme betrifft (außerdem habe ich keine Ahnung, was unter MISRA-C alles erlaubt ist), aber *(int32_t*)(&a) sollte eigentlich auch dort funktionieren, wo der einfache Cast versagt:

Einfaches Casten heißt ja: nimm den Wert und stelle ihn _wertgleich_ in dem neuen Typ dar - was passiert, wenn das nicht möglich ist, ist dann halt Compiler-Sache

Wenn ich hingegen die Zeiger caste, wird einfach die Speicherstelle anders interpretiert, was das gewünschte Ergebnis liefert, sofern 'Quell'- und 'Ziel'-Plattform (du hast nicht erwähnt, woher die Daten kommen) die gleiche Integer-Kodierung verwenden - um die 'endianness' muss man sich natürlich selbst kümmern, und falls andere Vorzeichenkonventionen verwendet werden (k.A., ob in der Praxis was anderes als two's-complement überhaupt auftritt) führt ja wohl kein Weg daran vorbei, sich die Zahlen über arithmetische Operationen neu zu 'bauen'.

Gruß
 Christoph