quint32 i = 666;
void * vp = &i;
float f = *(float*)vp;
Sie auch direkt die Adresse des i
zu einem float *
werfen könnte, aber das wird dazu führen, der Compiler, der sich über das Brechen strikter Aliasing-Regeln beschweren möchte. Nicht das Einfügen eines Void Pointers dazwischen macht es "besser", aber zumindest beklagen sie sich nicht.
Es funktioniert wie erwartet, 666 binär ist 1010011010
, nach der Umwandlung f
9.33265e-43
ist, die 00000000000000000000001010011010
binär ist - die binäre Darstellung ist das gleiche.
Stellen Sie sicher, dass die Zielgröße nicht größer ist als die Quellgröße, wenn Sie solche Konvertierungen vornehmen. In dieser Situation sind quint32 und float gleich 4 Byte. Wenn das Ziel jedoch größer als die Quelle ist, lesen Sie "wer weiß was", was negative Konsequenzen haben kann.
Qt hat wirklich nichts damit zu tun, es ist einfach nur C++. – dtech
Klingt wie eine fehlerhafte Annahme: 'reinterpret_cast (myQuint32Var)'. –
MSalters