将byte []转换为float [],反之亦然

时间:2014-07-18 10:21:32

标签: java android arrays

我想在Java中将字节数组(byte[])转换为float数组(float[])。

我读了一些例子但是当我再次转换回来时,为了比较结果与原始信号相同,它是不一样的。

那么我该如何执行这个过程呢?

编辑:

我这样做:

ByteArrayInputStream bas = new ByteArrayInputStream(data);
        DataInputStream ds = new DataInputStream(bas);
        float[] data_proc = new float[numbytes / 4];

        for (int i = 0; i < data_proc.length; i++) {
            try {
                data_proc[i] = ds.readFloat();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }



        ByteArrayOutputStream bas2 = new ByteArrayOutputStream();
        DataOutputStream ds2 = new DataOutputStream(bas2);
        for(int i=0;i<data_proc.length;i++){

            try {
                ds2.writeFloat(data_proc[i]);
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
            byte telo[] = bas2.toByteArray();

但是,当我比较两个.pcm文件不等于。

1 个答案:

答案 0 :(得分:0)

可以通过使用 ByteBuffer 类轻松完成,它有 putFloat 方法,您需要使用它来完成工作。

示例:

public static byte [] long2ByteArray (long value)
{
    return ByteBuffer.allocate(8).putLong(value).array();
}

public static byte [] float2ByteArray (float value)
{  
    return ByteBuffer.allocate(4).putFloat(value).array();
}