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

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