//这个函数将float转换成byte[]
public static byte[] float2byte(float f){
// 把float转换为byte[]
int fbit=Float.floatToIntBits(f);
byte[]b=new byte[4];
for(int i=0;i< 4;i++){
b[i]=(byte)(fbit>>(24-i*8));
}
// 翻转数组
int len=b.length;
// 建立一个与源数组元素类型相同的数组
byte[]dest=new byte[len];
// 为了防止修改源数组,将源数组拷贝一份副本
System.arraycopy(b,0,dest,0,len);
byte temp;
// 将顺位第i个与倒数第i个交换
for(int i=0;i<len /2;++i){
temp=dest[i];
dest[i]=dest[len-i-1];
dest[len-i-1]=temp;
}
return dest;
}
public static float getFloat(byte[] b) {
int accum = 0;
accum = accum|(b[0] & 0xff) << 0;
accum = accum|(b[1] & 0xff) << 8;
accum = accum|(b[2] & 0xff) << 16;
accum = accum|(b[3] & 0xff) << 24;
System.out.println(accum);
return Float.intBitsToFloat(accum);
}
测试:
float f = 2867.2163f;
byte[] b=float2byte(f);
for(int i=0;i<3;i++) {
System.out.println(b[i]); //输出byte数组,显示的是奇怪的数字,因为float的四个字节被拆分成了四份
}
float f2=getFloat(b);
System.out.println(f2);
注意:在PC机测试的话,注意大小端问题~
版权声明:本文为jaccen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。