我在 Android 项目中使用 JNI 代码,其中 JNI 本机函数需要一个短[] 参数。但是,原始数据存储为 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
array.
short[] shortArray = new short[size/2];
rgbBuf.order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(shortArray);
此外,您可能需要使用allocateDirect
代替allocate
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)