1 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
采用Float.floatToRawIntBits()函數(shù)將float類(lèi)型轉(zhuǎn)換成對(duì)應(yīng)的32bit整數(shù)類(lèi)型,然后將其拆分成兩個(gè)short類(lèi)型。代碼大致如下:
float value = 要轉(zhuǎn)換的浮點(diǎn)數(shù)
int intBits = Float.floatToRawIntBits(value);
short[] send = new short[]{(intBits >> 16) & 0xFFFF, intBits & 0xFFFF};
這里取到的send就是你可以用來(lái)發(fā)送的兩個(gè)16bit數(shù)組
附上floatToRawIntBits說(shuō)明:
Float.floatToRawIntBits
public static int floatToRawIntBits(float value)根據(jù) IEEE 754 浮點(diǎn)“單一格式”位布局,返回指定浮點(diǎn)值的表示形式,并保留非數(shù)字 (NaN) 值。
第 31 位(掩碼 0x80000000 選定的位)表示浮點(diǎn)數(shù)的符號(hào)。第 30-23 位(掩碼 0x7f800000 選定的位)表示指數(shù)。第 22-0 位(掩碼 0x007fffff 選定的位)表示浮點(diǎn)數(shù)的有效位數(shù)(有時(shí)也稱(chēng)為尾數(shù))。
如果參數(shù)為正無(wú)窮大,則結(jié)果為 0x7f800000。
如果參數(shù)為負(fù)無(wú)窮大,則結(jié)果為 0xff800000。
如果參數(shù)為 NaN,則結(jié)果是表示實(shí)際 NaN 值的整數(shù)。與 floatToIntBits 方法不同,floatToRawIntBits 不壓縮所有將 NaN 編碼為一個(gè)“規(guī)范”NaN 值的位模式。
在所有情況下,結(jié)果都是一個(gè)整數(shù),將其賦予 intBitsToFloat(int) 方法將生成一個(gè)與 floatToRawIntBits 的參數(shù)相同的浮點(diǎn)值。
添加回答
舉報(bào)