Из библиотеки, с которой я работаю, я получаю массив ushort
.
Я хочу преобразовать их в массив float
: первый ushort
представляет 16 MSB изпервый float
, а второй ushort
- это 16 LSB первого float
и т. д.
Я пробовал что-то вроде следующего, но значение приводится как значение целого числа., а не необработанные биты:
ushort[] buffer = { 0xBF80, 0x0000 };
float f = (uint)buffer[0] << 16 | buffer[1];
// expected result => f == -1 (0xBF800000)
// effective result => f == 3.21283686E+9 (0x4F3F8000)
Есть предложения?