将二进制数据转化为64种人眼可识别的字符串a-z, A-Z, 0-9, /, +
可以将一些二进制文件编码成可识别的字符串
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。
如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。
作用:
有些网站html, 要展示图片, 可以将图片的base64编码集成在网页的html中
电子邮件发送图片, 会将图片进行base64编码之后再传输
编码表

示例代码:
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.widget.ImageView;
import java.io.ByteArrayOutputStream;
public class MainActivity extends AppCompatActivity {
private ImageView ivImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivImage = (ImageView) findViewById(R.id.iv_image);
new Thread() {
@Override
public void run() {
//对图片进行base64编码
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.xxx);
ByteArrayOutputStream out = new ByteArrayOutputStream();
//将图片输出到输出流中
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
//将图片转为字节数组
byte[] bytes = out.toByteArray();
//byte[] encode = Base64.encode(bytes, Base64.DEFAULT);
String str = Base64.encodeToString(bytes, Base64.DEFAULT);
System.out.println("base64:" + str);
//对base64进行解码
byte[] decode = Base64.decode(str.getBytes(), Base64.DEFAULT);
final Bitmap bitmap1 = BitmapFactory.decodeByteArray(decode, 0, decode.length);
runOnUiThread(new Runnable() {
@Override
public void run() {
ivImage.setImageBitmap(bitmap1);
}
});
}
}.start();
}
}
<!--activity_main.xml-->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jcf.base64demo.MainActivity">
<ImageView
android:id="@+id/iv_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>