java - 如何从 ByteBuffer 获取数组,但仅限于它的位置?

标签 java arrays bytebuffer

我有

ByteBuffer buf = ByteBuffer.allocateDirect(500);

然后我使用 buf.put(byte) 几次,比如 20 次。 我通过底层数组将其保存到 sql blob,即通过调用 buf.array()。但是,buf.array()的长度是500。如何得到一个长度为20的数组(byte[]),可以传递给其他(只读)函数? (当然没有复制。)

最佳答案

试试这个

ByteBuffer buf = ByteBuffer.allocate(500);
buf.putInt(1);
...
...
byte[] a = new byte[buf.position()];
buf.rewind();
buf.get(a);

关于java - 如何从 ByteBuffer 获取数组,但仅限于它的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22714917/

相关文章:

java - 您在 Java 世界(JVM 上的脚本语言)中首选的脚本语言是什么?

c - 段错误(核心转储)错误 (C)

java - 如何垃圾收集Java中的直接缓冲区

java - ByteBuffer.wrap 出乎意料地出来了

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

Java Paint 方法闪烁并消失

java - maven war插件如何配置多个输出目录?

java - 通过获取数据源创建数据源

Python 从长度变化的数组中刷新 Pyplot 线

ruby-on-rails - 从数组计算时间并转换为时区