专栏首页Android干货浅谈Base64编码算法

浅谈Base64编码算法

一、什么是编码解码

  编码:利用特定的算法,对原始内容进行处理,生成运算后的内容,形成另一种数据的表现形式,可以根据算法,再还原回来,这种操作称之为编码。

  解码:利用编码使用的算法的逆运算,对经过编码的数据进行处理,还原出原始数据,这种操作称之为解码。

二、什么是Base64编码算法

  可以将任意的字节数组数据,通过算法,生成只有(大小写英文、数字、+、/)(一共64个字符)内容表示的字符串数据。

  即将任意的内容转换为可见的字符串形式。

三、Base64算法的由来

  以前发送邮件只支持可见字符的传送。由此,需要有一个方法将不可见的字符转换为可见的字符,便产生了Base64编码算法

四、Base64算法的特点

1、将数据按照 3个字节一组的形式进行处理,每三个字节在编码之后被转换为4个字节。

  即:如果一个数据有6个字节,可编码后将包含6/3*4=8个字节

2、当数据的长度无法满足3的倍数的情况下,最后的数据需要进行填充操作,即补“=” ,这里“=”是填充字符,不要理解为第65个字符

eg: 三个字节 ,转换成 4个字节 的过程:

可以看出,将原始数据的 每三个字节分为一组,按位进行分割为 每6位一个字节的形式,进行转换,形成新的4个字节。这四个字节才通过Base64编码表进行映射,形成最后实际的Base64编码结果。

如果原始数据最后无法凑成3个字节,则补填充,以“=”作为替换,代表没有数据

五、

Base64编码索引表

六、Base64使用场景

1、服务器给客户端在JSON中传递二进制数据

2、客户端给服务器传递参数时,通过Base64传递二进制内容

七、注意点

1、Base64是编码算法,不是加密算法,只是用来编码字节数组,形成字符串的,并提供了解码功能

2、Base64.encodeToString(byte[] data,int flag);

第二个参数设置NO_WRAP 即代表生成的字符串是否换行

Base64.encode(String str,int flag)同上

相关知识:

浅谈Hex编码算法

浅谈URLEncoder编码算法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 安卓开发_数据存储技术_sqlite

    听着music睡
  • 浅谈Adapter中观察者模式

    听着music睡
  • vue学习笔记-常用指令

    只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

    听着music睡
  • 一个bit一个bit的进行 Base64 白话科普,看不懂算你输

    菜天哥哥
  • 解决Microsoft Visual Studio Code Name "Orcas" 不能安装的问题

    .NET FX 3.0 July CTP... While I am here, might as well share a headache from las...

    阿新
  • 原则一书的管理干货

    ... 2) Realize that you have nothing to fear from truth. Understanding, accepti...

    用户1908973
  • Ultimate Guide to Python Debugging

    平时有很多碎片化时间,比如下班的地铁上,或者等待的时间,我们总喜欢拿出手机玩,这个时间也可以用来学习呢,当然佳爷自己也想学习英语,所以上下班的时间看看。

    仇诺伊
  • PHP Swoole异步MySQL客户端实现方法示例

    本文实例讲述了PHP Swoole异步MySQL客户端实现方法。分享给大家供大家参考,具体如下:

    砸漏
  • java 字符串编码转换 字符集/编码的见解 心得 体会(跟之前那个C++编码随笔对应)

    用户1258909
  • 可以试用一下这个号称能取代GATK best practice的工具套件

    逛biostar的时候无意发现了这个神器,至于为什么我会逛biostar论坛了,明天你们就知道了。

    生信技能树

扫码关注云+社区

领取腾讯云代金券