2

我正在通过 InputStream 从 .wav 文件中读取数据,并且 read() 返回字节。我使用的一个声音处理库,只接受 float[] 来处理。完成后,它给了我一个 float[] 回来。现在我需要再次以字节格式写入 Android 的 AudioTrack。

如何将这些转换bytesfloats[],然后再转换为byte[]?我搜索了一下,但一切似乎与我的情况有点不同,所有问题似乎都以不同的方式解决......所以我现在有点迷路了。

如果某种图书馆已经提供了这种转换,我也很高兴听到这个消息!

谢谢!

4

2 回答 2

0

您可以使用java.nio.ByteBuffer。它有很多有用的方法可以从字节数组中提取不同的类型,并且还可以处理您的大部分问题。

        byte[] data = new byte[36];
        ByteBuffer buffer = ByteBuffer.wrap(data);          
        float second = buffer.getFloat(); //This helps to 
        float x = 0;
        buffer.putFloat(x);
于 2013-10-19T13:01:52.537 回答
0

您只需要复制这些位。尝试使用 BlockCopy。

 float[] fArray = new float[] { 1.0f, ..... };
 byte[] bArray= new byte[fArray.Length*4];
 Buffer.BlockCopy(fArray,0,bArray,0,bArray.Length);

*4 是因为每个浮点数是 4 个字节。

于 2013-10-19T12:55:47.293 回答