如何在Android NDK中比较两个jbyte数组

时间:2012-11-08 19:07:45

标签: android arrays android-ndk java-native-interface byte

我是NDK和学习的新手。

我设法从java代码调用本机方法,但不知道如何比较两个jbyte数组

这就是我所拥有的:

 jbyte bytes1[] = {48, -126, 1,4};
 jbyte bytes2[] = {48, -126, 1,4};

 jclass cls = (*env)->GetObjectClass(env, bytes1);
 jmethodID   mid = (*env)->GetMethodID(env, cls, "equals", "([B)Z");
 jboolean isEqual = (*env)->CallBooleanMethod(env, bytes1, mid, bytes2);

我知道上面的代码是错误的,但是有一种比较字节数组的正确方法

1 个答案:

答案 0 :(得分:1)

如果需要比较两个jbyte数组,请使用memcmp。

#include <string.h>
int memcmp(const void *s1, const void *s2, size_t n);

在您的示例中,

jboolean isEqual = (memcmp(bytes1, bytes2, 4) == 0);