Geben Sie Casting struct in integer c ++ @ ei
Ich habe ein Design, bei dem Werte an bestimmten Stellen in einem 32-Bit-Wort enthalten sein müssen. Beispiel: Die Bits 10-15 müssen den Wert 9 haben, die restlichen Bits sind alle 0. Der Einfachheit halber habe ich eine Struktur erstellt, die eine aufgeschlüsselte Version der Fragen enthält.
struct {
int part1 : 10;
int part2 : 6;
int part3 : 16;
} word;
Ich kann dann @ setzpart2
gleich dem gewünschten Wert sein und die anderen Teile auf 0 setzen.
word.part1 = 0;
word.part2 = 9;
word.part3 = 0;
Ich möchte jetzt diese Struktur nehmen und in eine einzelne 32-Bit-Ganzzahl konvertieren. Ich habe es zwar kompiliert, indem ich das Casting erzwinge, aber es scheint keine sehr elegante oder sichere Art zu sein, die Daten zu konvertieren.
int x = *reinterpret_cast<int*>(&word);
Wenn ich versuche, es ganz normal zu besetzenreinterpret_cast<int>(word)
Ich erhalte den folgenden Fehler:
invalid cast from type 'ClassName::<anonymous struct>' to type 'int'
Es muss einen besseren Weg geben, ich kann es einfach nicht herausfinden. Danke im Voraus
Hinweis: Muss im C ++ - Stil ausgeführt werden, da Standards und so weiter ...Augenverdrehe