首页 > 解决方案 > 如何在不复制数据的情况下将 IntBuffer 转换为 ByteBuffer

问题描述

我的 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)

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

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

标签: javascalaniobytebufferproject-panama

解决方案


推荐阅读