Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中如何将字节[]转换为浮点[]并返回?_Java_Android_Audio_Byte_Audiotrack - Fatal编程技术网

在Java中如何将字节[]转换为浮点[]并返回?

在Java中如何将字节[]转换为浮点[]并返回?,java,android,audio,byte,audiotrack,Java,Android,Audio,Byte,Audiotrack,我通过InputStream从.wav文件读取数据,read()返回字节。我使用的声音处理库只接受float[]进行处理。完成后,它会给我一个浮点数。现在我需要再次以字节格式写入Android的音轨 如何将这些字节转换为浮动[],然后再转换回字节[]?我搜索了一点,但一切似乎都有点不同的情况下,我的,所有的问题似乎是以不同的方式解决。。。所以我现在有点迷路了 如果像这样的转换已经在某种图书馆提供,我也很高兴听到 谢谢 您只需要复制位。 尝试使用区块复制 float[] fArray = new

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

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

如果像这样的转换已经在某种图书馆提供,我也很高兴听到


谢谢

您只需要复制位。 尝试使用区块复制

 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替代方案仅在类型相同时支持复制。