我尝试使用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和设置无符号浮点数?
由于
答案 0 :(得分:2)
IEEE 754浮点表示为符号保留1位。没有替代表示将此位用作尾数或指数的一部分。换句话说,没有“无符号浮动”。
如果您只想确保不在缓冲区中输入任何负数,那么只需执行
m_buf.putFloat(nOffset, Math.abs(number.floatValue()));
答案 1 :(得分:-1)
您不能使用带有浮点数的按位&
。试试这个:
m_buf.putFloat(nOffset, Float.valueOf(0xFFFFFFFF & number));