博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Base64原理解析
阅读量:5825 次
发布时间:2019-06-18

本文共 1878 字,大约阅读时间需要 6 分钟。


Base64是基于64个字符进行转换的,因为2的6次方正好为64,所以6bit就可以表示出64个字符,因此在转换的过程中以6bit表示一个字符。


原理:

3x8=4x6,核心是这个公式

  1. base64的编码都是按字符串长度,以每3个8bit的字符为一组
  2. 针对每组,首先获取每个字符的ASCII编码值
  3. 将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节
  4. 再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节
  5. 将这4个8bit的字节转换成10进制,对照Base64编码表,得到对应编码后的字符

ASCII表

图片描述

Base64编码表

图片描述

案例

  • 字符串长度能被3整除的:比如 wen
w           e          nASCII:  119         101        1108bit:  01110111   01100101   011011106bit:  011101  110110  010101  101110十进制:  29      54      21      46Base64:   d     2       V       u所以 "wen" ---- > d2Vu
  • 字符串长度不能被3整除时,比如:jiang
j          i           a          n           gASCII:  106        105         97          110         1038bit:  01101010   01101001   01100001   01101110     011001116bit:  011010  100110  100101  100001  011011 100110  011100  异常十进制:  26      38      37      33       27     38    28Base64:  a       m       l      h         b      m     c      =所以 "jiang" ---- > amlhbmc=

注意:Base64是四个字符为一组,不够的补=

工具网站:

汉字转Base64

这里需要注意,汉字本身可以有多种编码,比如gb2312、utf-8、gbk等等,每一种编码的Base64对应值都不一样。下面的例子以utf-8为例

utf-8E4B8A5,写成二进制就是三字节的11100100 10111000 10100101,然后按照上面的规则转换得到Base64 编码为:5Lil

所以,汉字严(utf-8编码)的Base64值就是5Lil

从上面英语字母或者汉字转换为Base64的来看,就是先转换为对应的编码的二进制,然后在进行转换

补充内容

对于一张图片,我们进程看到这样的表达形式:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAA....

这是这是Data URI scheme目的是将一些小数据,直接嵌入到网页中,而不用在引用外部

在上面data表示取得数据的协定名称,image/png 是数据类型名称,base64 是数据的编码方法,逗号后面就是这个image/png文件base64编码后的数据

Data URI scheme支持的类型有:

  • data:,文本数据
  • data:text/plain,文本数据
  • data:text/html,HTML代码
  • data:text/html;base64,base64编码的HTML代码
  • data:text/css,CSS代码
  • data:text/css;base64,base64编码的CSS代码
  • data:text/javascript,Javascript代码
  • data:text/javascript;base64,base64编码的Javascript代码
  • data:image/gif;base64,base64编码的gif图片数据
  • data:image/png;base64,base64编码的png图片数据
  • data:image/jpeg;base64,base64编码的jpeg图片数据
  • data:image/x-icon;base64,base64编码的icon图片数据

图片描述

扫描关注,查看更多文章,提高编程能力

转载地址:http://wlsdx.baihongyu.com/

你可能感兴趣的文章
爬虫IP被禁的简单解决方法——切换UserAgent
查看>>
php生成word,并下载
查看>>
紫书 习题8-11 UVa 1615 (区间选点问题)
查看>>
asp.net mvc学习(Vs技巧与Httpcontext)
查看>>
float数据在内存中是怎么存储的
查看>>
dedecms 修改标题长度可以修改数据库
查看>>
Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)
查看>>
MySQL案列之主从复制出错问题以及pt-slave-restart工具的使用
查看>>
linux 查看剩余内存数
查看>>
测试人员容易遗漏的隐藏缺陷
查看>>
maven+SpringMVC搭建RESTful后端服务框架
查看>>
[BalkanOI2016]Cruise
查看>>
一本书的摘录
查看>>
重排序(转载)
查看>>
python+selenium之字符串切割操作
查看>>
串结构练习——字符串匹配
查看>>
linux下输入密码不回显
查看>>
《构建之法》读书笔记
查看>>
拿下阿里、头条、滴滴的offer后谈谈面试经验---动身前看一看
查看>>
android开发(49) android 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏
查看>>