50

Android に文字列用の base-64 デコーダーとエンコーダーはありますか?

4

5 に答える 5

75

これは、Base64クラスを使用して単純な String 値をエンコードおよびデコードする方法の例です。

// String to be encoded with Base64
String text = "Test";
// Sending side
byte[] data = null;
try {
    data = text.getBytes("UTF-8");
} catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
}
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

// Receiving side
byte[] data1 = Base64.decode(base64, Base64.DEFAULT);
String text1 = null;
try {
    text1 = new String(data1, "UTF-8");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

この抜粋は、Android アクティビティに含めることができます。

于 2012-08-22T20:50:43.147 に答える
33

見るandroid.util.Base64

これは API バージョン 8 または android 2.2 で追加されたようで、古いプラットフォームでは使用できません。

ただし、そのソースはあるandroid/util/Base64.javaので、必要に応じて、古いバージョン用に変更せずにコピーすることができます。

于 2010-12-01T07:42:44.183 に答える
13

これは、 Android API 8+でのみサポートされていることに気付くまで、私が使用しようとしていた簡単な方法です。

// Has line break
public String getBase64(String input) {
    return Base64.encodeToString(input.getBytes(), Base64.DEFAULT);
}

// No line break
public String getBase64(String input) {
    return Base64.encodeToString(input.getBytes(), Base64.NO_WRAP);
}
于 2012-08-26T16:06:33.690 に答える
11

エンコードするには:

private String encodeString(String s) {
    byte[] data = new byte[0];

    try {
        data = s.getBytes("UTF-8");

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } finally {
        String base64Encoded = Base64.encodeToString(data, Base64.DEFAULT);

        return base64Encoded;

    }
}

デコードするには:

private String decodeString(String encoded) {
    byte[] dataDec = Base64.decode(encoded, Base64.DEFAULT);
    String decodedString = "";
    try {

        decodedString = new String(dataDec, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();

    } finally {

        return decodedString;
    }
}

    String text = "example007";

    Log.e("encoded", encodeString(text)); //Output: ZXhhbXBsZTAwNw==
    Log.e("decoded", decodeString(encodeString(text))); //Output: example007
于 2015-12-23T22:21:16.983 に答える
5

文字列の最後に改行を入れたくない場合は、フラグを からに変更します。Base64.DEFAULTBase64.NO_WRAP

Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
于 2015-05-07T07:24:50.427 に答える