因为近期刚好用到这个,然后遇到一些问题,通过查询资料,发现写的好像都不是太清楚。所以我就想着写一个相对详细点的使用教程。
Adroid中通过Base64类直接实现Base64的编码和解码。
使用的时候要导入adroid下的Base64包,这点是要注意的,因为如果不导入到的是java.util下的包的话,编译时不会出错,但是运行时程序会崩溃。
下面就介绍一下怎么使用:
flags参数简介:
(例子中的:Base64.DEFAULT)
CRLF 这个参数看起来比较眼熟,它就是Win风格的换行符,意思就是使用CR LF这一对作为一行的结尾而不是Unix风格的LF
DEFAULT 这个参数是默认,使用默认的方法来加密
NO_PADDING 这个参数是略去加密字符串最后的”=”
NO_WRAP 这个参数意思是略去所有的换行符(设置后CRLF就没用了)
URL_SAFE 这个参数意思是加密时不使用对URL和文件名有特殊意义的字符来作为加密字符,具体就是以-和_取代+和/
/*编码*/
public static String encodeBase64(String encodeStr){
if (encodeStr == null) return null;
try {
byte[] b =Base64.encode(encodeStr.getBytes(StandardCharsets.UTF_8),Base64.DEFAULT);
return new String(b);
} catch (Exception e) {
return null;
}
}
/*解码*/
public static String decodeBase64(String decodeStr){
if (decodeStr == null) return null;
try {
byte[] b = Base64.decode(decodeStr,Base64.DEFAULT);
return new String(b);
} catch (Exception e) {
return null;
}
}
测试与结果:
方法调用:
Log.i("Base64编码", Mqtt.encodeBase64("测试!"));
Log.i("Base64解码", Mqtt.decodeBase64(Mqtt.encodeBase64("测试!")));
结果打印:
I/Base64编码: 5rWL6K+V77yB
I/Base64解码: 测试!
希望对各位码友有用,谢谢阅读。如果有什么地方错误的,欢迎留言讨论。