Uwaga: błędnie zapytałem o oryginalną wersję: static_cast
; właśnie dlatego pierwsza z najlepszych odpowiedzi wymienia najpierw static_cast
.Czy można bezpiecznie reinterpretować wartość liczby całkowitej na wartość float?
Mam kilka plików binarnych z małymi wartościami zmiennoprzecinkowymi. Chcę je czytać w sposób niezależny od maszyny. Moje procedury zamiany bajtów (z SDL) działają na liczbach całkowitych bez znaku.
Czy można bezpiecznie rzucać między intami a spławikami?
float read_float() {
// Read in 4 bytes.
Uint32 val;
fread(&val, 4, 1, fp);
// Swap the bytes to little-endian if necessary.
val = SDL_SwapLE32(val);
// Return as a float
return reinterpret_cast<float &>(val); //XXX Is this safe?
}
Chcę, aby to oprogramowanie było jak najbardziej przenośne.
Możesz "reinterpretować" tylko wskaźniki lub typy odniesienia; Twój kod nie zostanie skompilowany. – Praetorian
Prawdopodobnie masz na myśli coś w rodzaju wyniku float = reintrepret_cast (val); –
Ups. Naprawdę powinienem był najpierw spróbować skompilować:/ – QuasarDonkey