C #: преобразовать ushort в float

Из библиотеки Я работаю, я получаю массив ushort .

Я хочу преобразовать их в массив float : Первый ushort представляет 16 MSB первого float и второго ushort - это 16 младших битов первого числа с плавающей запятой и так далее.

Я пробовал использовать что-то вроде следующего, но значение приводится как значение целого числа, а не необработанные биты:

ushort[] buffer = { 0xBF80, 0x0000 };
float f = (uint)buffer[0] << 16 | buffer[1];
// expected result  => f == -1            (0xBF800000)
// effective result => f == 3.21283686E+9 (0x4F3F8000)

Есть предложения?

6
задан gregseth 3 February 2012 в 14:49
поделиться