2017-03-27 8 views
0

多分私はここで何か愚かなものを見落としているかもしれませんが、出力が一致しません。入力は、通常端子から読み出されるバイト[]配列を出力すると予期せぬ出力が発生する

System.out.println("test: " + new byte[] {0,0,0,0,0,0,0,1,1,1,0,0,1,1,0,1}); 

結果

test: [[email protected] 

を与える:ただし

rk: [[email protected] 

、次のコードは:

String input = "0111001101"; 
String[] splits = input.split(""); 
rk1 = new byte[] { 0, 0, 0, 0, 0, 0,(byte) Integer.parseInt(splits[0]),(byte) Integer.parseInt(splits[1]),(byte) Integer.parseInt(splits[2]),(byte) Integer.parseInt(splits[3]),(byte) Integer.parseInt(splits[4]),(byte) Integer.parseInt(splits[5]),(byte) Integer.parseInt(splits[6]),(byte) Integer.parseInt(splits[7]),(byte) Integer.parseInt(splits[8]),(byte) Integer.parseInt(splits[9]) }; 
System.out.println("rk: " + rk1); 

このコードは、結果を得ますしかし、常に2進数10桁でなければなりません。既にその場所でエラー処理が行われています。

バイトが左か右からパディングされているかどうかはわかりませんでしたので、手動で左にビットをパディングして合計16ビットにしました。多分その違いを引き起こしていたかもしれないと思った。まったく同じ出力を得ました。

私はここで何かが分かりませんか? Javadocsは本当に私をここでも助けてくれませんでした。

+0

値[B @ 4b67cf4d'は、バイト配列の値ではなく、オブジェクト型とIDハッシュコードを表しています。あなたは何を達成しようとしていますか? @ジョン・クーゲルマン。 –

+0

。いいですよ。それはそれほど簡単でした。 Javaを忘れてしまったことは、そのことについて敏感です。私は2年間でJavaを使用していないし、少し錆びています。ありがとうございます – Chris

答えて

0

アレイを印刷するだけで何も伝えられません。 Javaは、あなたが持っている2つの異なるバイト配列の2つの異なるメモリアドレスを出力します。それらの2つの配列が同じものを含んでいるからといって、同じメモリアドレスを指しているわけではありません。

+0

これはメモリアドレスではなく、オブジェクトタイプとオブジェクトの 'System.identityHashCode()'を '@'で区切っています。 –

関連する問題