我试图通过将 byte[] 放入 ByteBuffer 将 byte[] 转换为 float[],将其转换为 FloatBuffer (.asFloatBuffer
),然后将其转换为一个数组。
private static float[] toFloatArray(byte[] bytes) {
ByteBuffer buffer = ByteBuffer.wrap(bytes);
return buffer.asFloatBuffer().array();
}
然而运行:
byte[] bytes = {14,32,26,21};
toFloatArray(bytes);
给我一个 java.lang.UnsupportedOperationException
在 java.nio.FloatBuffer.array(未知来源)
。
我相信文档说错误与缓冲区没有数组支持有关 (???)。
有谁知道如何解决这个问题,或者我应该如何将这个数组转换为 float ?
最佳答案
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;
}
例如:
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));
关于java - UnsupportedOperationException 将 byte[] 转换为 float[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624161/