Base64介绍
简介:是一种8Bit的字节编码方式,使用64个可打印字符来表示二进制编码,常用于在HTTP环境中传输。(不够详细,可以去看百度百科)
原理:3*8 = 4*6
就是把3个字符的8位二进制代码6位一组分为4组,然后每组的高位使用00进行补齐
那么当总的二进制位数不是3的倍数时,缺的位数全部使用0进行补齐。
优点: 1. 不受字符编码格式的影响,可以跨平台使用;
2. 在http协议下的传输速度更快(字符串肯定比图片等资源下载更快);
3. 由于Base64的编码,不能够直观的读取到信息,所以安全性更好一点;
这个老哥写的不错,可以去看看:https://blog.youkuaiyun.com/benbenxiongyuan/article/details/7756912
Android中的使用
由于Android和Java中提供了Base64的库,所以Base64的解码和编码就变得十分简单。美滋滋。
字符串的编码和解码:
总共两行代码结束,可以说是相当简单了
String name = "helloworld";
//编码过程
String strBase64 = Base64.encodeToString(name.getBytes(), Base64.DEFAULT);
//解码过程
String str2 = new String(Base64.decode(strBase64.getBytes(), Base64.DEFAULT));
Base64转换为图片
在Android开发过程中,常遇到获取到一个Base64的串。
如果选用自己的图片可以使用http://imgbase64.duoshitong.com/实现图片的转Base64编码。
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABOElEQVQ4EcVSMU7DQBBcJyEpKLCEqCFFKJHFC/gBNIgSU9GaF+C8IKKkoo54ARWuUgFSmrRcQ5oo0iEEElhOMnPyoXNwLCpYaeK9nZm78Tki/13ebwJs9Z8C6C5z7dnkZF9bX8M2q54wh+BuHH6IPrbrygQwU2hPth6e3rYpShPA6EPUA0JguchFQEziR4LcfA8uoGBFacxNiporgJmmZ6DKTIsPRGy+E8AcYs3YJAs1/3iT7EXJ7HVq5rWNTalv72qv2WqbDWCOwSxflsz0VNLhQLLJuLAhF95aUxqdva4HM081cVxVOnqUdPTgjsp6zTsomOfpl3wO7lxzUubMZz4/owJ2AJZG5KtsrJL32+vETPKf9eNz3s0RcAocACzFVwjQ8P010MUfROFZWdgsguAQuKgU/gm5AAx1XDt4tnfBAAAAAElFTkSuQmCC
使用这个串用作图片时,需要将其先转换为BitMap才能用到ImageView上面。
首先把编码串上中的data:image/png;base64,
给去除,然后再使用下面的方法即可。
public Bitmap stringToBitmap(String string) {
//将字符串转换成Bitmap类型
Bitmap bitmap = null;
try {
byte[] bitmapArray;
bitmapArray = Base64.decode(string, Base64.DEFAULT);//注意解码的时候要把编码的头("data:image/png;base64,")去掉,否则将会失效
bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}