1

バイトデータを文字列に変換し、この文字列をバイトに戻しています。ただし、この文字列をバイトに戻そうとすると、バイトデータを取得できません。非常にばかげたことをしていることはわかっています。エラーの内容を教えてください。以下はJavaでの私のコードです

Log.e("byte data",""+byte_data[3]);  //70
Log.e("data in string",""+Integer.toBinaryString(byte_data[3]));  //1000110
String data=Integer.toBinaryString(byte_song[3]);
Log.e("byte data",""+data.getBytes());

ただし、dat.getBytes() は [B@414eaa48 を返しますが、70 を返す必要がありました。

4

2 に答える 2

2

getBytesは配列を返しますが、byte配列のtoStringメソッドはその内容を表示しません (これは時々煩わしい場合があります)。Arrays.toString代わりに、配列の内容を表示してみてください。xオブジェクトの場合、"" + xは と同等であることに注意してくださいx.toString()

于 2013-03-09T20:53:51.603 に答える
1

dat.getBytes()それ自体が Java のオブジェクトである bytes の配列を提供します。そのオブジェクトを出力したり、 を呼び出したりしようとすると、クラスtoString()toString()メソッドが呼び出されます。java.lang.ObjectIn java.lang.ObjectclasstoString()は次のように定義されます。

public String  toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

そのため、このような出力が得られます。あなたが望むものを達成するには UPDATE
Log.e("byte data",""+dat.getBytes());変更する必要があり ますに戻すには、次を使用する必要があります。
Log.e("byte data",""+java.util.Arrays.toString(dat.getBytes()));

70
Log.e("byte data",""+Integer.parseInt(String.valueOf(byte_data[3]),10));

Log.e("byte data",""+Integer.parseInt(data,2));

于 2013-03-09T20:53:54.003 に答える