2
String encode = Base64.encodeBase64String("Hello".getBytes());
System.out.println(encode);
byte[] decode = Base64.decodeBase64(encode);
System.out.println(decode.toString());

ここで何が悪いのかわかりません。考えられるあらゆる組み合わせを試しました。文字セットを toString に設定し、toString を設定しません。エンコードは完全に機能します。その数値を Web デコーダーに投入して、毎回正しい値を取得できます。これを機能させることはできません。

出力:

 run:
SGVsbG8= (encode)

[B@1fb8ee3  (decode)

for ループを使用して手動で文字列に文字を追加すると、機能させることができます。しかし、私はtoStringが私のためにそれをしたと思いましたか?

4

2 に答える 2

5

当面の問題は、バイト配列を文字列に変換する方法です。

代わりにこれを試してください:

System.out.println(new String(decode));

ただし、通常、文字エンコーディングを指定しないString.getBytes()orのオーバーロードを使用するのはお勧めできません。new String(byte[])それらはプラットフォームのデフォルトのエンコーディングを使用します。これは、コードが移植可能でないこと、または少なくともデータが移植できないことを即座に意味します。UTF-8 などの一般的なエンコーディングを使用することをお勧めします。

于 2011-03-14T16:20:32.003 に答える
2

toString()on an array はあなたが期待していることをしません...それはtoString()からのデフォルトの実装Objectであり、オブジェクトのハッシュコードに基づいて文字列を返します。試してみてくださいnew String(decode)

于 2011-03-14T16:20:00.427 に答える