虽然目前很多网络服务都是用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