Kad*_*SOL 0 java java-native-interface nio
这是java数组中最大的问题,它们需要复制才能进行编辑.我正在使用AMD Aparapi,我从计算中得到字节数组.我需要将字节数组显示为bytebuffer"不复制"
byte aparapiData[];
ByteBuffer buffer;
...
//here bytebuffer
buffer.clear();
buffer.put(aparapiData);
buffer.flip();
socket.write(buffer);
Run Code Online (Sandbox Code Playgroud)
代码中的问题,buffer.put是将字节数组复制到bytebuffer.并且还有将字节数组转换为bytebuffer的反向问题.
他们真的需要复制数据吗?我可以在不复制的情况下在C++上发送纯数据.
我怎样才能在Java上解决这个问题?
要获取指向现有字节数组的ByteBuffer,可以使用以下wrap函数:
byte[] array = /* something */;
ByteBuffer buffer = ByteBuffer.wrap(array);
Run Code Online (Sandbox Code Playgroud)
要获取指向现有ByteBuffer的字节数组,可以使用以下array方法:
ByteBuffer buffer = /* something */;
byte[] array = buffer.array();
Run Code Online (Sandbox Code Playgroud)
但请注意,后者仅在ByteBuffer由数组支持时才有效(即hasArray返回时true).
缺乏对称性的原因是ByteBuffer可以以任何数量的不同方式实现.有时它实现为内存中的一个数组,但它很可能在查询时从磁盘或网络或其他来源读取数据.在这种情况下,您不能只访问底层数组,因为没有.
| 归档时间: |
|
| 查看次数: |
5523 次 |
| 最近记录: |