gpt4 book ai didi

android - 如何从 ByteBuffer 获取 short[]

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:48 27 4
gpt4 key购买 nike

我在 Android 项目中使用 JNI 代码,其中 JNI native 函数需要一个 short[] 参数。但是,原始数据存储为 ByteBuffer。我正在尝试按如下方式转换数据格式。

ByteBuffer rgbBuf = ByteBuffer.allocate(size);
...
short[] shortArray = (short[]) rgbBuf.asShortBuffer().array().clone();

但是我在运行上面显示的第二行代码时遇到了以下问题:

E/AndroidRuntime(23923): Caused by: java.lang.UnsupportedOperationException
E/AndroidRuntime(23923): at Java.nio.ShortToByteBufferAdapter.protectedArray(ShortToByteBufferAdapter.java:169)

谁能建议一种实现转换的方法?

最佳答案

实际上,这样做的方法有点奇怪。您可以按以下方式进行;将其转换为 short 数组很重要。

short[] shortArray = new short[size/2];
rgbBuf.order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(shortArray);

此外,您可能必须使用 allocateDirect 而不是 allocate

关于android - 如何从 ByteBuffer 获取 short[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11930385/

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