float与bytes[]互转

//这个函数将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版权协议,转载请附上原文出处链接和本声明。