如何将无符号浮点数放入ByteBuffer?

时间:2014-12-07 18:41:11

标签: java unsigned

我尝试使用ByteBuffer来处理无符号基元数。

我可以处理(放入ByteBuffer)unsigned byte / short / int。 例如,处理unsigned int的代码:

m_buf.putInt(nOffset, (int) (0xFFFFFFFF & number.longValue()));

但是,当我想对unsigned float做同样的事情时:

m_buf.putFloat(nOffset, (float) (0xFFFFFFFF & number.doubleValue()));

我收到了编译错误:"运营商&未定义参数类型int,double"

那么 - 如何使用ByteBuffer来处理get和设置无符号浮点数?

由于

2 个答案:

答案 0 :(得分:2)

IEEE 754浮点表示为符号保留1位。没有替代表示将此位用作尾数或指数的一部分。换句话说,没有“无符号浮动”。

如果您只想确保不在缓冲区中输入任何负数,那么只需执行

m_buf.putFloat(nOffset, Math.abs(number.floatValue()));

答案 1 :(得分:-1)

您不能使用带有浮点数的按位&。试试这个:

m_buf.putFloat(nOffset, Float.valueOf(0xFFFFFFFF & number));