我将捕获的指纹图像作为字节数组保存到我的SQLite数据库中,因为它的大小非常小,就像这样。
byte[] template = new byte[....];
然后我登录并得到一个像[B @ 41d25378。这就是在blob列中将其发送给我的sqlite数据库的原因。
现在的问题是,当我从数据库中检索此值时,
byte[] photo = cursor.getBlob(cursor.getColumnIndex("fingerprint"));
我记录该值及其完全不同的值[B @ 420447f8,但这就是我想要的值[B @ 41d25378。因此,由于返回的内容不同,我无法匹配指纹。我怎样才能找回相同的byte []值。
我也尝试过使用字符串,但是可以想出一种方法来获得完全匹配。提前致谢...
字符串[B@420447f8
和[B@41d25378
是toString()
Javabyte[]
对象上调用的方法所返回的值,这些方法使用Object.toString()
(和随后的Object.hashCode()
)而不覆盖它。它们不代表任何形式的数组元素的值!
鉴于此,它们是不同的,因为它们不是同一实例,因为toString()使用hashCode()作为返回字符串的后缀。
另外,请注意:与内存地址无关!在Java中,术语“内存地址”不适用。(除了JVM的实现细节,如分配和GC等)。
你也错了:
然后我登录并得到一个像[B @ 41d25378。这就是在blob列中将其发送给我的sqlite数据库的原因。
不,那仍然只是toString()
输出,而不是字节数组的内容。无论如何,有意义的指纹必须超过11个字节...
您可能应该比较两个数组(Arrays.compare(arr1,arr2)
),或记录它们的一部分(例如前几个字节值)以及它们的长度,以确保它们相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句