将byte []转换为float []的UnsupportedOperationException

use*_*572 8 java arrays buffer byte exception

我试图通过将byte []放入ByteBuffer,将其转换为FloatBuffer(.asFloatBuffer),然后将其转换为数组,将byte []转换为float [] .

private static float[] toFloatArray(byte[] bytes) {
    ByteBuffer buffer = ByteBuffer.wrap(bytes);
    return buffer.asFloatBuffer().array();
}
Run Code Online (Sandbox Code Playgroud)

但运行:

 byte[] bytes = {14,32,26,21};
          toFloatArray(bytes);
Run Code Online (Sandbox Code Playgroud)

给我一个java.lang.UnsupportedOperationException at java.nio.FloatBuffer.array(Unknown Source).我相信文档说错误与缓冲区没有数组支持(???).

任何人都知道如何解决这个问题,或者我应该如何将此数组转换为浮点数?

Fat*_*ton 10

    private static float[] toFloatArray(byte[] bytes) {
        ByteBuffer buffer = ByteBuffer.wrap(bytes);
        FloatBuffer fb = buffer.asFloatBuffer();

        float[] floatArray = new float[fb.limit()];
        fb.get(floatArray);


        return floatArray;
    }
Run Code Online (Sandbox Code Playgroud)

例如:

     byte[] bytes = {65,-56,0,0 , 65,-56,0,0};
     float[] result = toFloatArray(bytes);   

     //print 25.0 25.0
     System.out.println(Arrays.toString(result));
Run Code Online (Sandbox Code Playgroud)