Base64 кодер и декодер - PullRequest
       19

Base64 кодер и декодер

47 голосов
/ 01 декабря 2010

Есть ли в Android декодер и кодировщик base-64 для строки в Android?

Ответы [ 6 ]

70 голосов
/ 23 августа 2012

Это пример того, как использовать класс Base64 для кодирования и декодирования простого строкового значения.

// 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.

31 голосов
/ 01 декабря 2010

См. android.util.Base64

Похоже, что это было добавлено в API версии 8 или Android 2.2, поэтому оно не будет доступно на старых платформах.

Но его источником является android/util/Base64.java, поэтому при необходимости можно просто скопировать его без изменений для более старых версий.

10 голосов
/ 24 декабря 2015

Для кодирования:

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
8 голосов
/ 26 августа 2012

Вот простой метод, который я собирался использовать, пока не понял, что он поддерживается только в 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);
}
4 голосов
/ 07 мая 2015

Если вы не хотите разрыв строки в конце строки, измените флаги с Base64.DEFAULT на Base64.NO_WRAP

Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
3 голосов
/ 01 декабря 2010

base64 декодирование это может помочь всем нам.

...