java 把float類型 按 IEEE 754格式 轉換成 int類型進行網絡報文傳送

雖然目前很多網絡服務都是用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章