雖然目前很多網絡服務都是用json格式傳送數據, 但是還是有很多其它系統採用純報文協議傳送.
這時就會碰到一個問題, float類型在各種開發語言中長度並不相同, 報文的網絡傳送必須是固定長度的內容,
因此就有了把float等浮點類型轉換成定長的 4個字節的 int類型,
float轉int在國際上有一個通用標準: IEEE 754, 這個在java提供的api中有這個方法(自己寫也不難)
下面就是代碼:
注意: intToByte4B(), parseByte2HexStr()方法, 請參考我前面已發佈的文章.
public class TestFloatToInt {
public static void main(String[] args) {
float f2 = 999.123F;
float f3 = 999.567F;
//結果:1148831711
int i2 = Float.floatToIntBits(f2);
int i3 = Float.floatToIntBits(f3);
//int是4字節存儲, 大端模式順序處理
byte[] byteBuf2 = intToByte4B(i2);
//int是4字節存儲, 大端模式順序處理
byte[] byteBuf3 = intToByte4B(i3);
//f2大端結果: 44 79 C7 DF
String hex2 = parseByte2HexStr(byteBuf2, 4);
//f3大端結果: 44 79 E4 4A
String hexStr = StaticConvert.parseByte2HexStr(byteBuf3, 4);
System.out.println(" float[999.123]轉成int: "+ i2);
System.out.println(" float[999.567]轉成int: "+ i2);
System.out.println(" float[999.123]轉成16進制: "+ hex2);
System.out.println(" float[999.567]轉成16進制: "+ hexStr);
}
}
結果是:
float[999.123]轉成int: 1148831711
float[999.567]轉成int: 1148831711
float[999.123]轉成16進制: 4479C7DF
float[999.567]轉成16進制: 4479E44A