Java Base64编解码器

Java Base64编解码器,java,android,base64,encoder,decoder,Java,Android,Base64,Encoder,Decoder,Android中是否有用于字符串的base-64解码器和编码器?请参阅 这似乎是在API版本8或android 2.2中添加的,因此在较旧的平台上不可用 但是它的源代码是,如果需要的话,可以在旧版本中不加更改地复制它。这是一个如何使用Base64类对简单字符串值进行编码和解码的示例 // String to be encoded with Base64 String text = "Test"; // Sending side byte[] data = null; try { data

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

请参阅

这似乎是在API版本8或android 2.2中添加的,因此在较旧的平台上不可用


但是它的源代码是,如果需要的话,可以在旧版本中不加更改地复制它。

这是一个如何使用
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活动中。

以下是我将要使用的一个简单方法,直到我意识到只有在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);
}

如果不想在字符串末尾使用换行符,请将标志从
Base64.默认值更改为
Base64.不换行

Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
编码: 要解码: 例子
使用
Base64.DEFAULT
将在我的案例中插入换行符。我使用的是
Base64。没有换行符。
对我来说唯一适用于2字节字符的。Mw==的编码Base64是TXc9PQ==但是这个源代码显示TXc9PQo=出了什么问题-o@Mr.Hyde你有一个尾随的新行。TXc9PQo=解码为
Mw==\n
。是的,为了解决这个问题,我们应该在encodeToString函数中使用Base64.NO\u WRAP作为标志,而不是Base64.DEFAULT.hi有Base64.class,但是它有一个错误“$assertionsDisabled无法解析为变量”,正如上面@arvin所评论的:“使用Base64.DEFAULT将在我的案例中插入换行符。我使用Base64.NO_WRAP代替。”
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