将字节转换为blob时,将不同的结果从java中的blob转换回byte

时间:2012-11-28 13:10:36

标签: java

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

3 个答案:

答案 0 :(得分:1)

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

如果要比较这些,请在两个字节数组上使用equals()。或者也许逐个比较元素(如果尺寸不匹配,首先检查长度以避免不必要的遍历)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

使用包含各种基本类型的重载方法的Arrays.equals()