É seguro reinterpretar um inteiro para flutuar?
Nota: eu perguntei erroneamente sobrestatic_cast
originalmente; é por isso que a principal resposta mencionastatic_cast
no início.
Eu tenho alguns arquivos binários com valores de float little endian. Eu quero lê-los de maneira independente de máquina. Minhas rotinas de troca de bytes (do SDL) operam em tipos inteiros sem sinal.
É seguro simplesmente lançar entre ints e floats?
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?
}
Eu quero que este software seja o mais portátil possível.