Android 如何比较JNI中的两个jbyteArray?
如果JNI中的两个jbyteArray相等,我想比较一下。有没有像“strcmp”这样的方法?如果你想检查两个jbyteArray实际上是相同的对象,你可以用Android 如何比较JNI中的两个jbyteArray?,android,java-native-interface,Android,Java Native Interface,如果JNI中的两个jbyteArray相等,我想比较一下。有没有像“strcmp”这样的方法?如果你想检查两个jbyteArray实际上是相同的对象,你可以用env->IsSameObject(array1,array2)来测试 如果它们实际上是不同的对象,您可以通过逐个元素匹配来将数组的内容与JNI进行比较。当然,首先比较两个对象的长度是明智的,并且只有在长度相等时才继续固定它们的元素 GetByteArrayElements(array)返回一个C字节数组,因此两个jbyteArray的结果
env->IsSameObject(array1,array2)
来测试
如果它们实际上是不同的对象,您可以通过逐个元素匹配来将数组的内容与JNI进行比较。当然,首先比较两个对象的长度是明智的,并且只有在长度相等时才继续固定它们的元素
GetByteArrayElements(array)
返回一个C字节数组,因此两个jbyteArray的结果可以与memcmp()
进行比较
即使不再需要Java对象,也不要忘记在使用后释放数组。在开始比较之前,不要忘记检查jbyteArrays是否不为空。请参阅
GetByteArrayElements
thx,似乎最好的方法是使用memcmp()逐个元素进行比较。如果有可能这两个对象实际上是相同的,直接逐字节比较内容不仅浪费时间;在这种情况下,GetByteArrayElements()将不可避免地导致不必要的复制操作。