如何从Java中的无符号字节浮点数?

3 java floating-point unsigned byte

我正在与某些设备进行通信,此设备将数据作为无符号字节发送给我.我需要将这些字节转换为Java中的float.有什么办法吗?

非常感谢你.

Mik*_*uel 5

是. Float.intBitsToFloat将32位作为int并将其转换为float.

您首先需要做的就是int使用正常移位和/或适合数据字节顺序的操作将四个字节转换为a .例如,

float f = Float.intBitsToFloat(
    (barr[0] & 0xff)
    | ((barr[1] & 0xff) << 8)
    | ((barr[2] & 0xff) << 16)
    | ((barr[7] & 0xff) << 24));
Run Code Online (Sandbox Code Playgroud)

您也可以FloatBuffer根据接收数据的方式使用.

public abstract FloatBuffer asFloatBuffer()
Run Code Online (Sandbox Code Playgroud)

将此字节缓冲区的视图创建为浮点缓冲区.

请注意,"设备[是]将数据作为无符号字节发送"并非如此.数据向您发送字节,Java将它们表示为有符号字节.Java没有无符号字节类型.

http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

byte:字节数据类型是8位有符号二进制补码整数.它的最小值为-128,最大值为127(含).