3

私はAndroidjavaxAPIを使用して文字列を暗号化し、バイト配列を返します。この配列を再び文字列に変換します(目的は後でテキストファイルに書き込むことです)。

この文字列を使用して、バイト配列に変換して復号化します。これにより、別のバイト配列が返され、再度文字列に変換されます。

これを機能させることができませんでした。問題をバイト配列部分への文字列変換に絞り込みました。なぜなら、暗号化されたバイト配列を使用して復号化し、文字列を取得すると、それが機能するからです。

何が問題なのかわからない。私は変換に以下を使用しました:

String str;
Byte [] theByteArray = str.getBytes("UTF-8");
String val = new String (theByteArray , "UTF-8");

and 

Byte [] theByteArray = str.getBytes();
String val = new String (theByteArray);

何も失うことなくバイト配列から文字列に、またはその逆に変換するための最良の方法は何ですか?

4

2 に答える 2

3

apacheライブラリのHexクラスを使用できます。デコードおよびエンコード機能を提供します。

String s = "42Gears Mobility Systems";
byte[] bytes = Hex.decodeHex(s.toCharArray());

String s2 = new String(Hex.encodeHex(bytes));
于 2012-11-23T03:51:28.700 に答える
0

バイト配列を文字列に、またはその逆に格納する別の方法が本当に必要な場合は、データが失われないようにBase64エンコーディングを使用するのが最善の方法です。zipをダウンロードできるリンクは次のとおりです。zipを解凍し、プロジェクトにクラスファイルを含めます。次に、エンコードとデコードが必要な場所で、次のコードスニペットを使用します。

//データをエンコードして文字列に変換するには

ByteArrayOutputStream bao = new ByteArrayOutputStream();
 bitMap.compress(Bitmap.CompressFormat.JPEG, 90, bao);
  byte [] ba = bao.toByteArray();
  String ba1=Base64.encodeBytes(ba);

//データを再度バイト配列にデコードするには

try{
            byte[] ba3 = Base64.decode(ba1);

    }catch(Exception e)
            {

            }
于 2012-11-23T04:07:42.643 に答える