Base64编码器和解码器

xyd*_*dev 48 java base64 android encoder decoder

Android中的字符串是否有base-64解码器和编码器?

bla*_*her 72

这是如何使用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();
}
Run Code Online (Sandbox Code Playgroud)

此摘录可以包含在Android活动中.

  • 使用`Base64.DEFAULT`将在我的情况下插入一个换行符.我使用`Base64.NO_WRAP`代替. (12认同)

Dan*_* D. 31

看到 android.util.Base64

似乎这是在API版本8或Android 2.2中添加的,因此它不会在旧版平台上提供.

但它的来源就是android/util/Base64.java这样,如果需要,可以只为旧版本复制它.

  • 是的,为了解决它,我们应该使用Base64.NO_WRAP作为encodeToString函数中的标志,而不是Base64.DEFAULT. (3认同)
  • @ Mr.Hyde你有一个尾随的新行.TXc9PQo =解码为`Mw == \n`. (2认同)

Com*_*ode 10

编码:

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;

    }
}
Run Code Online (Sandbox Code Playgroud)

要解码:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

    String text = "example007";

    Log.e("encoded", encodeString(text)); //Output: ZXhhbXBsZTAwNw==
    Log.e("decoded", decodeString(encodeString(text))); //Output: example007
Run Code Online (Sandbox Code Playgroud)


Jar*_*ows 9

这是一个我将要使用的简单方法,直到我意识到这仅在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);
}
Run Code Online (Sandbox Code Playgroud)


Hug*_*sse 5

如果你想要一个换行符在字符串的结尾,标志从改变Base64.DEFAULTBase64.NO_WRAP

Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
Run Code Online (Sandbox Code Playgroud)