Java Base64编解码器
Android中是否有用于字符串的base-64解码器和编码器?请参阅 这似乎是在API版本8或android 2.2中添加的,因此在较旧的平台上不可用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
但是它的源代码是,如果需要的话,可以在旧版本中不加更改地复制它。这是一个如何使用
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