2014-12-07 34 views
1

我試圖處理與ByteBuffer無符號原語編號。如何將unsigned float放入ByteBuffer?

我可以處理(放入ByteBuffer)unsigned byte/short/int。 例如,代碼來處理unsigned int類型:

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

,但是,當我想爲無符號的浮動做同樣的:

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

我收到編譯器錯誤:「運營商&是undefined爲參數類型int,double「

所以 - 我如何處理get和設置無符號浮點數ByteBuffer

謝謝

+5

「* unsigned float?*」 – Tiny 2014-12-07 18:45:00

+0

根本沒有任何商定的無符號浮點數的定義。 – 2014-12-07 18:45:52

+0

你是對的, 之後檢查cpp項目 - 有沒有無符號浮點數... :) – user3668129 2014-12-07 18:50:12

回答

2

IEEE 754浮點表示有1位爲符號保留。沒有其他替代表示將該位用作尾數或指數的一部分。換句話說,沒有「unsigned float」。

如果你想要做的是確保你不把任何負數在緩衝區中,只是做

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

不能按位&浮點數使用。試試這個:

m_buf.putFloat(nOffset, Float.valueOf(0xFFFFFFFF & number)); 
相關問題