在Java中如何将字节[]转换为浮点[]并返回?
我通过InputStream从.wav文件读取数据,read()返回字节。我使用的声音处理库只接受float[]进行处理。完成后,它会给我一个浮点数。现在我需要再次以字节格式写入Android的音轨 如何将这些在Java中如何将字节[]转换为浮点[]并返回?,java,android,audio,byte,audiotrack,Java,Android,Audio,Byte,Audiotrack,我通过InputStream从.wav文件读取数据,read()返回字节。我使用的声音处理库只接受float[]进行处理。完成后,它会给我一个浮点数。现在我需要再次以字节格式写入Android的音轨 如何将这些字节转换为浮动[],然后再转换回字节[]?我搜索了一点,但一切似乎都有点不同的情况下,我的,所有的问题似乎是以不同的方式解决。。。所以我现在有点迷路了 如果像这样的转换已经在某种图书馆提供,我也很高兴听到 谢谢 您只需要复制位。 尝试使用区块复制 float[] fArray = new
字节
转换为浮动[]
,然后再转换回字节[]
?我搜索了一点,但一切似乎都有点不同的情况下,我的,所有的问题似乎是以不同的方式解决。。。所以我现在有点迷路了
如果像这样的转换已经在某种图书馆提供,我也很高兴听到
谢谢 您只需要复制位。 尝试使用区块复制
float[] fArray = new float[] { 1.0f, ..... };
byte[] bArray= new byte[fArray.Length*4];
Buffer.BlockCopy(fArray,0,bArray,0,bArray.Length);
*4是因为每个浮点数是4个字节。您可以使用。它有很多有用的方法可以从字节数组中提取不同的类型,并且还可以处理大多数问题
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到1.0吗?找到它,你就可以轻松地进行转换。答案是不是试过这个,
byte[]bytes={32,-32,60120};ByteBuffer bbuf=ByteBuffer.wrap(字节);虽然(bbuf.remaining()>0){System.out.println(bbuf.getFloat());
但它只返回这个:3.798709E-19…我做错了什么吗?这个在C中工作,但Java替代方案仅在类型相同时支持复制。