0

指紋テンプレートをバイト配列に変換する(シリアル化する)タスクがあります。次に、2つのバイト配列をblobに変換する前と、bytearrrayから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()、2バイト配列で使用してください。または、要素を1つずつ比較します(サイズが一致しない場合は、最初に長さを確認して、不要なトラバーサルを回避します)

于 2012-11-28T13:13:28.657 に答える
0

印刷の出力は「javaオブジェクトID」であり、配列の内容ではありません

于 2012-11-28T13:13:43.820 に答える
0

配列の内容ではなく、それらの参照を比較しています。

Arrays.equals()さまざまなプリミティブ型のオーバーロードされたメソッドを含むを使用します。

于 2012-11-28T13:14:49.900 に答える