一,Base64是什么原理比较难理解,可参考下面的实践
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后binhex的版本使用不同的64字符集来代表6个二进制数字,但是它们不叫Base64。
Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIME的email、在XML中存储复杂数据。
二,原理
Base64可以将ASCII字符串或者是二进制编码成只包含A—Z,a—z,0—9,+,/ 这64个字符( 26个大写字母,26个小写字母,10个数字,1个+,一个 / 刚好64个字符)。这64个字符用6个bit位就可以全部表示出来,一个字节有8个bit 位,那么还剩下两个bit位,这两个bit位用0来补充。其实,一个Base64字符仍然是8个bit位,但是有效部分只有右边的6个 bit,左边两个永远是0。
Base64的编码规则是将3个8位字节(3×8=24位)编码成4个6位的字节(4×6=24位),之后在每个6位字节前面,补充两个0,形成4个8位字节的形式,那么取值范围就变成了0~63。又因为2的6次方等于64,所以每6个位组成一个单元。
三,步骤

  • 第一步,将汉字转为二进制
  • 第二步,将上面的二进制转为每6个一组。
  • 第三步,在每组前面添加两个0,每组由6个变为8个二进制位,总共32个二进制位,即四个字节。
  • 第四步,根据Base64编码表获得对应的值。

四,实践

  • 随便找两个汉字然后转为十进制,这里我选的汉字是“编码”,我们可以看到它们的编码分别为 编: 45536 码:49899

  • 然后我们将这两个十进制准换为二进制
    45536 1011000111100000
    49899 1100001011101011

  • 开始将他们分割为6个一组10110001111000001100001011101011
    101100
    011110
    000011
    000010
    111010
    110000
    最后一位不足6位则进行补零

  • 然后在每组前面加两个零变成8位字节的形式
    00101100
    00011110
    00000011
    00000010
    00111010
    00110000

  • 准换回十进制
    44
    30
    3
    2
    58
    48

  • 参照Base64编码表找到对应编码他们分别对应 s e D C 6 w

  • 测试(http://web.chacuo.net/charsetbase64)
    结果:
    用JAVA代码测试:

    <完>

Base64编码过程详解相关推荐

  1. 01_什么是one-hot编码、one-hot编码过程详解、为什么需要one-hot编码?one-hot编码的优缺点、使用sklearn中的API举例

    以下资料来自:网络+最后的整合 https://www.cnblogs.com/shuaishuaidefeizhu/p/11269257.html https://www.cntofu.com/bo ...

  2. ​Base64编码知识详解 ​

    在我们进行前端开发时,针对项目优化,常会提到一条:针对较小图片,合理使用Base64字符串替换内嵌,可以减少页面http请求. 并且还会特别强调下,必须是小图片,大小不要超过多少KB,等等. 那么,B ...

  3. lzw编码过程详解_编码拓展——封装、编码、码率

    有小伙伴想要更多知道编码封装这一块 那就继续写写吧 什么是封装?什么是编码 不知道大家有没有试过 "明明都是 mp4,为什么这个能够导入剪辑软件,那个则不能?"的情况. ok,下面 ...

  4. 【通信原理 入坑之路】—— 信息论部分 离散无记忆信源的不等长编码 之 霍夫曼编码过程详解

    还记得在上一篇博客中,我们讨论的离散无记忆信源的等长编码吗,我们最后得到的结论是 -- 如果使用等长编码,那么对典型序列编码的编码效率是最高的.然而,要满足较高的编码效率,同时还要保证误码率的情况下, ...

  5. Huffman 编码原理详解(代码示例)

    1.概述 huffman编码是一种可变长编码(  VLC:variable length coding))方式,于1952年由huffman提出.依据字符在需要编码文件中出现的概率提供对字符的唯一编码 ...

  6. Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略

    Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介.案例应用(python中的编码格式及常见编码问题详解)之详细攻略 目录 符串编码(ASCII编码/GB ...

  7. xss编码绕过详解(更像是在介绍实体编码和JS编码的解析过程)

    xss编码绕过详解(更像是在介绍实体编码和JS编码的解析过程) 注:本文通过研究各种情况下实体编码和JS编码是否生效,进而总结了哪些情况下能够进行编码后,javascript代码依然能够正常执行. 解 ...

  8. Android签名机制之---签名验证过程详解

    一.前言 今天是元旦,也是Single Dog的嚎叫之日,只能写博客来祛除寂寞了,今天我们继续来看一下Android中的签名机制的姊妹篇:Android中是如何验证一个Apk的签名.在前一篇文章中我们 ...

  9. base64加密原理详解及C语言源码

    base64加密原理详解 Base64从本质来说,其实并不是加密算法,只是一种编码方式而已,Base64的"加解密"也不叫加密解密,而是编码解码,但是现在一般都把它归为加密算法. ...

最新文章

  1. 获取网站Alexa排名数值的方法
  2. Apriori关联规则算法
  3. socket 编程 基于 select 实现的回射客户端/服务程序
  4. AcWing 95. 费解的开关(指数型枚举)
  5. 不宜使用Selenium自动化的10个测试场景
  6. 蓝牙avrcp协议源码分析
  7. 对称 symmetric
  8. 瑞友天翼服务器系统资源不足,瑞友天翼问题处理
  9. WEBMAX功能简述
  10. Android热更新方案Robust——美团热更新(热修复)使用介绍
  11. 香农采样定理(奈奎斯特采样定理)
  12. bat文件(实现批量处理)
  13. trove mysql 镜像_openstack trove 数据库镜像构建列表
  14. 【学习笔记】ROS-移动机器人导航相关
  15. java过滤特殊字符,只留下字母、数字和汉字
  16. iOS12.1.3~12.2可以越狱了,附iOS12.1.3~12.2越狱教程,以及下载地址
  17. HCIA(华为体系初级网络安全工程师)(第二天)
  18. Java SE基础知识详解第[13]期—不可变集合、Stream流、异常
  19. 计算机博士发几篇论文可以毕业,发SCI论文到底有多难,硕士博士毕业一般能有几篇...
  20. 以微信小程序相册为例,看Serverless DevOps最佳实践

热门文章

  1. 我欲凌风,只为寻常梦
  2. 西加云杉700E设备AAA认证之移动设备的上下线操作
  3. oracle rman 00571,oracle 备份失败 RMAN-03002,RMAN-00569,RMAN-00571等处理方法
  4. linux调用百度接口ocr快速准确提取图片中文字
  5. C++数据结构与算法之二叉树中序遍历
  6. 苹果手机变成耳机模式怎么调回来_苹果耳机模式怎么调回来
  7. 《深入理解JAVA虚拟机》详细解读(第二章 ):JAVA内存区域与内存溢出异常
  8. 14%网民在网上预订火车票 9%网购机票
  9. 燃尽图,甘特图,鱼骨图
  10. BEVDet/BEVDepth/BEVFormer/BEVFusion各有什么优缺点?