java - 如何在不复制数据的情况下将 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 中,如何访问我的整数数组ByteBuffer
和int[]
.
解决方案
推荐阅读
- java - Hibernate JPA 按子类属性过滤
- c# - 使用存储过程将数据库中的 MySql 数据加载到 WPF 中的 TextBox 中
- python-3.x - 如何使用 python 在 tkinter 标签中打印变量
- kibana - 获取消息字段值的长度/大小
- flutter - 颤振错误:类型'_InternalLinkedHashMap
' 不是类型 'String' 的子类型 - javascript - 一个函数正在执行无限循环,其他函数不能使用
- python - 如何将此while循环转换为for循环
- unix - 如何在多行中创建带有参数的别名(如 SH 文件)
- typescript - 如何将“adsbygoogle”AdSense 属性添加到 Typescript 中的“window”全局对象?
- docker - 使用 Ansible 部署 Docker 镜像