Estoy programando en C++. Necesito convertir un entero con signo de 24 bits (almacenado en una matriz de 3 bytes) para flotar (normalizando a [-1.0,1.0]).C/C++ - Convertir entero de 24 bits con signo para flotar
La plataforma es MSVC++ en x86 (lo que significa que la entrada es little-endian).
yo probamos este:
float convert(const unsigned char* src)
{
int i = src[2];
i = (i << 8) | src[1];
i = (i << 8) | src[0];
const float Q = 2.0/((1 << 24) - 1.0);
return (i + 0.5) * Q;
}
No estoy del todo seguro, pero parece que los resultados que estoy obteniendo de este código son incorrectos. Entonces, ¿mi código está equivocado? Si es así, ¿por qué?
El código real está en C++. No es mi código, y no dije que fuera bonito. –