1 回答

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