gpt4 book ai didi

Java:将直接 ByteBuffer 转换为 double[]

转载 作者:行者123 更新时间:2023-11-30 06:28:45 24 4
gpt4 key购买 nike

最好的方法是什么?

我尝试了以下方法:

ByteBuffer cacheBuffer=ByteBuffer.allocateDirect(nm(nLimit,0));  //where nm(nLimit,0) is a large number
double[] cache=cacheBuffer.asDoubleBuffer().array();

但是我遇到了这个异常:

java.lang.UnsupportedOperationException
at java.nio.DoubleBuffer.array(Unknown Source)

为什么?

编辑:

它看起来像 javadoc“返回支持此缓冲区的 double 组(可选操作)”。实际上意味着 array() 方法只是返回已经支持此缓冲区的 double 组。我认为它会以某种方式将缓冲区转换为 double[] 。所以现在我得到一个异常(exception)是有道理的。

最佳答案

这仅在您希望您的数组只是一个副本时才有效。

final DoubleBuffer buffer = cacheBuffer.asDoubleBuffer();
final double[] copy = new double[buffer.remaining()];
buffer.get(copy);

您尝试失败的原因是array 仅支持非直接 缓冲区;直接缓冲区不受数组支持。

关于Java:将直接 ByteBuffer 转换为 double[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12228152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com