Да.Float.intBitsToFloat
принимает 32 бита в виде целого числа и преобразует его в число с плавающей точкой.
Все, что вам нужно сделать в первую очередь, - это преобразовать четыре байта в int
с использованием обычного сдвига и илиоперации, соответствующие порядку ваших данных.Например,
float f = Float.intBitsToFloat(
(barr[0] & 0xff)
| ((barr[1] & 0xff) << 8)
| ((barr[2] & 0xff) << 16)
| ((barr[7] & 0xff) << 24));
Вы также можете использовать FloatBuffer
в зависимости от способа получения данных.
public abstract FloatBuffer asFloatBuffer()
Создает представлениеэтот байтовый буфер в качестве плавающего буфера.
Обратите внимание, что «устройство [отправляет] мне данные как неподписанные байты» не соответствует действительности.Данные отправляют вам байты, и Java представляет их как подписанных байтов.У Java нет типа байта без знака.
http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
byte : тип данных байта - 8-битная подписанная два дополнения целое число.Он имеет минимальное значение -128 и максимальное значение 127 (включительно).