我有一项将指纹模板转换为字节数组(序列化)的任务。然后我将两个字节数组进行比较,然后将其转换为blob,然后将其从byte arrray转换回blob。当我打印它们时,它们会给我不同的结果。 这是代码
`Blob blob = con.createBlob();
blob.setBytes(1, enroller.getTemplate().serialize());
System.out.println(enroller.getTemplate().serialize());
//prints [B@53de73a3
int blobLength = (int) blob.length();
byte[] blobAsBytes = blob.getBytes(1, blobLength);
System.out.println(blobAsBytes);
//prints [B@3179fd59`
任何想法?
编辑:我也尝试使用array.equals(),它给了我一个错误的输出。
答案 0 :(得分:1)
为什么你会期望它们是一样的?您正在使用字节数组上的toString()
方法进行打印,这将为您提供类型信息+与(但不必然)内存位置相关的数字(实际上是hashCode()
未被覆盖的toString()
。
如果要比较这些,请在两个字节数组上使用equals()
。或者也许逐个比较元素(如果尺寸不匹配,首先检查长度以避免不必要的遍历)
答案 1 :(得分:0)
print的输出是“java object id”,而不是数组的内容
答案 2 :(得分:0)
您没有比较数组的内容,而是比较它们的引用。
使用包含各种基本类型的重载方法的Arrays.equals()
。