我正在通过InputStream从.wav文件中读取数据,而read()返回字节。我使用的声音处理库只接受float []进行处理。它完成后它给了我一个浮动[]。现在我需要再次以字节格式写入Android的AudioTrack。
如何将这些bytes
转换为floats[]
,然后又转回byte[]
?我搜索了一下,但一切似乎都有点与我的不同,所有的问题似乎都以不同的方式解决了......所以我现在有点迷失了。
如果在某种类型的库中已经提供了类似转换的内容,我也很高兴听到这个消息!
谢谢!
答案 0 :(得分:1)
您可以使用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);
答案 1 :(得分: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个字节。