【发布时间】:2011-12-17 21:50:37
【问题描述】:
我已经编写了一些代码,它使用 jni 在 java 和 c 之间传递值。
目前所有数字都定义为 int (java) -> jnit (jni/c) -> unsigned int (c)
代码可以工作,但效率很低,因为并非所有传递的数字都需要整数可用的内存。
我的代码中有 3 种类型的值需要保存 0 到 4294967295、0 到 255 和 0 到 1 的数字范围。
我无法找出所有 3 种“语言”的兼容数据类型。
Range Java C/JNI C
4294967296 int jint unsigned int
256 ??? ??? unsigned char
2 boolean jboolean ???
您能否告知我需要为上述 ???s 使用哪些数据类型?
谢谢 G
【问题讨论】:
-
在某些架构(尤其是 ARM)上,使用 32 位值比使用 16/8 位值更快。因此,除非它是我们正在谈论的存储空间,否则将参数传递为
int/jint可能是一个净赢。
标签: android c types java-native-interface