0

我有一个将指纹模板转换为字节数组(序列化)的任务。然后我比较了两个字节数组,然后将其转换为 blob,然后将其从字节数组转换回 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() 它给了我一个错误的输出。

4

3 回答 3

1

为什么你会期望这些是一样的?您正在使用toString()字节数组上的方法进行打印,这将为您提供类型信息 + 与(但不一定)内存位置相关的数字实际上hashCode()toString()未覆盖的时间)。

如果要比较这些,请equals()在两个字节数组上使用。或者可能一个一个地比较元素(如果大小不匹配,首先检查长度以避免不必要的遍历)

于 2012-11-28T13:13:28.657 回答
0

打印的输出是“java object id”,而不是数组的内容

于 2012-11-28T13:13:43.820 回答
0

您不是在比较数组的内容,而是比较它们的引用。

使用Arrays.equals()它包含各种原始类型的重载方法。

于 2012-11-28T13:14:49.900 回答