java - 将 ByteBuffer 与 FloatBuffer 结合起来

标签 java bytebuffer floatbuffer

有没有结合 ByteBuffer 和 FloatBuffer 的好方法? 例如,我获取 byte[] 数据,我需要将其转换为 float[] 数据,反之亦然:

byte[]float[] (java.lang.UnsupportedOperationException):

byte[] bytes = new bytes[N];
ByteBuffer.wrap(bytes).asFloatBuffer().array();

float[]byte[] (有效):

float[] floats = new float[N];
FloatBuffer floatBuffer = FloatBuffer.wrap(floats);
ByteBuffer byteBuffer = ByteBuffer.allocate(floatBuffer.capacity() * 4);
byteBuffer.asFloatBuffer().put(floats);
byte[] bytes = byteBuffer.array();

最佳答案

array()ByteBufferFloatBuffer可选操作,仅在支持时才支持Buffer 实际上是在具有适当类型的数组之上实现的。

当您不知道缓冲区的实际实现方式时,请使用 get 将缓冲区的内容读入数组。

关于java - 将 ByteBuffer 与 FloatBuffer 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11385596/

相关文章:

java - FloatBuffer 和 3D 图形

java - 将图像绘制到 AWT 上并初始化 Graphics

JAVA NIO ByteBuffer 分配以适应最大的数据集?

android - 如何更改 FloatBuffer 的内容,同时保持性能?

android - 为什么我们在 OpenGL (ES) android 中以字节为单位分配 block 而不是 float ,尽管我们大部分时间都使用 float

ios - 将 uint8_t 转换为 NSData

java - 使用 JMX 导出 Spring @Bean 对象

java - Java 中无法将 String 转换为 int

java - 单独使用java.lang包编译运行

javascript - 何时使用 Uint8Array、Uint16Array、Uint32Array