如何在不复制数据的情况下将IntBuffer转换为ByteBuffer

时间:2020-05-25 21:39:43

标签: java scala nio bytebuffer project-panama

我的Scala / Java代码具有大(数百兆)整数数组。我将使用int[]从此java.nio尽可能快地发送这些内容(不复制内容)。另外,当我在nio套接字通道上收到任何数据时,我会将其用作int[],而不进行复制。

所有nio操作都需要ByteBuffer,而ByteBuffer只能包装byte []

我可以分配一个ByteBuffer,然后使用asIntBuffer放置我的数组,但是它将复制随机数组,因此我必须将数据存储两次。

    val size = 1234

    val random = Array.fill[Int](size) { scala.util.Random.nextInt(1000) }

    val buf = ByteBuffer.allocate(4 * size)
    buf
      .asIntBuffer()
      .put(random)

我正在使用panama openjdk项目,因此任何新技巧(例如使用Pointer<>)都可以帮助我。

TL; DR:在Java或Scala中,如何以ByteBufferint[]的形式访问我的整数数组。

0 个答案:

没有答案