Я программирую на C++. Мне нужно преобразовать 24-разрядное целое число со знаком (хранится в 3-байтовом массиве) для float (нормализуется до [-1.0,1.0]).C/C++ - конвертировать 24-разрядное целое число со знаком в float
Платформа представляет собой MSVC++ на x86 (что означает, что вход является малорисковым).
Я попытался это:
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;
}
Я не совсем уверен, но мне кажется, результаты я получаю от этого кода являются неправильными. Итак, мой код неправильный, и если да, то почему?
Фактический код находится на C++. Это не мой код, и я не сказал, что это красиво. –