(Base64)—— Base64编码的使用

Base64介绍

简介:是一种8Bit的字节编码方式,使用64个可打印字符来表示二进制编码,常用于在HTTP环境中传输。(不够详细,可以去看百度百科)

原理:3*8 = 4*6
   就是把3个字符的8位二进制代码6位一组分为4组,然后每组的高位使用00进行补齐
   那么当总的二进制位数不是3的倍数时,缺的位数全部使用0进行补齐。
 
优点: 1. 不受字符编码格式的影响,可以跨平台使用;
    2. 在http协议下的传输速度更快(字符串肯定比图片等资源下载更快);
    3. 由于Base64的编码,不能够直观的读取到信息,所以安全性更好一点;

这个老哥写的不错,可以去看看:https://blog.csdn.net/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;
    }
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值