1

したがって、文字列のバイト値があります。たとえば、次のようにします。

String str="Test String";
System.out.println(str.getBytes());

それは私に与える:

[B@1339a0dc

次のようなバイト配列を初期化するためにこれを使用できますか:

byte[] bytes=new bytes("[B@1339a0dc");

か何か?

4

2 に答える 2

2

getBytesbyte配列を返します。したがって、次のことができます。

byte[] bytes = str.getBytes(); 

直接。

[B@1339a0dcString として表される単なるオブジェクト参照であり、実際のバイト配列ではありません

于 2013-06-25T16:06:53.163 に答える
1

いいえ。それはクラス名 ( [Bis byte[]) とハッシュコード (1339a0dcは 16 進数のハッシュ コード) です。ハッシュは全単射ではないため、元に戻すことはできません。

なぜこれを印刷するのですか?暗黙的な を使用しているためですtoString()。これ:

System.out.println(str.getBytes());

コンパイラによって次のように変換されます。

System.out.println(str.getBytes().toString());

なぜなら引数として を取るので、ここで暗黙の変換が行われますSystem.out.println()String

したがって、以前に説明したように機能するデフォルトの実装を使用していますObject#toString()(詳細はドキュメントを参照)

于 2013-06-25T16:06:05.300 に答える