我想在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文件不等于。
答案 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();
}