Ist es sicher, eine Ganzzahl neu zu interpretieren, um zu schweben?
Hinweis: Ich habe fälschlicherweise gefragtstatic_cast
ursprünglich; Aus diesem Grund wird in der oberen Antwort erwähntstatic_cast
zu Beginn.
Ich habe einige Binärdateien mit Little-Endian-Float-Werten. Ich möchte sie maschinenunabhängig lesen. Meine Byte-Swap-Routinen (von SDL) arbeiten mit Ganzzahlentypen ohne Vorzeichen.
Ist es sicher, einfach zwischen Ints und Floats zu werfen?
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?
}
Ich möchte, dass diese Software so portabel wie möglich ist.