Java 如何将未签名浮点放入ByteBuffer?

Java 如何将未签名浮点放入ByteBuffer?,java,unsigned,Java,Unsigned,我正试图用ByteBuffer处理无符号原语的数字 我可以处理(放入ByteBuffer)无符号字节/short/int。 例如,处理无符号int的代码: m_buf.putInt(nOffset, (int) (0xFFFFFFFF & number.longValue())); 但是,当我想对无符号浮点执行相同操作时: m_buf.putFloat(nOffset, (float) (0xFFFFFFFF & number.doubleValue())); 我遇到编译器错

我正试图用
ByteBuffer
处理无符号原语的数字

我可以处理(放入
ByteBuffer
)无符号字节/short/int。 例如,处理无符号int的代码:

m_buf.putInt(nOffset, (int) (0xFFFFFFFF & number.longValue()));
但是,当我想对无符号浮点执行相同操作时:

m_buf.putFloat(nOffset, (float) (0xFFFFFFFF & number.doubleValue()));
我遇到编译器错误:“参数类型int,double的运算符未定义”

那么-如何使用
ByteBuffer
处理get和set无符号浮点数


感谢

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

如果你想做的只是确保你没有在缓冲区中放入任何负数,那就这么做吧

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

不能将按位
与浮点数一起使用。试试这个:

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

对于无符号浮点,实际上没有任何一致的定义。您是对的,在与cpp项目检查后-没有无符号浮点…:)这个问题真的毫无意义。Java根本没有无符号类型(除非您计算
char
),而且我不知道有任何语言具有无符号浮点。我试着想象一个无符号浮点可能是什么——这个想法根本不存在。@DavidWallace,我会想象符号位将被用作尾数或指数的一部分。是的,我们可以想象。这个问题仍然毫无意义。“我正在尝试处理未签名的原始数字”相当于“我正在尝试放牧独角兽”。我们可以想象那些独角兽可能是什么样子,但有什么意义呢?