一、什么是Base64编码

Base64是一种用64个字符来表示任意二进制数据的方法。它是一种编码方式,而非加密方式。它通过将二进制数据转变为64个“可打印字符”,完成了数据在HTTP协议上的传输

二、为何要用base64 转换二进制

计算机识别的都是二进制数据,依据我们给的编码方式不同,对方机器得到的数据解码展示的也就不一样。

HTTP协议为超文本协议,一般都是通过网络将 服务器数据传输到 客户端的浏览器中,浏览器展示的都是文本 协议,也就是文字,这个文字的展示是二进制的按照ASCII 或者其他编码进行的,最基础的是 可打印字符(能够展示使用字符展示出来的),但是图片的二进制数据包含不可打印字符的(也就是文字识别不了)

就是说 要么我是文本展示,要么我是 二进制展示,如果文本中加了二进制 图片 我用文本解码器显然会出错(包的划分方式),所以我得将 二进制的图片转成 可打印的,也就是文本能够展示的。所以这个编码方式就是 用了base64 转换。

资料来源【 https://blog.csdn.net/s13383754499/article/details/80914157 】文中说 “HTTP协议为文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。”

这句话应该是有一些问题的,网络传输是二进制传输的,应该是http 的展示 问题,所以才进行转换字符数据。

关于网络传输问题,可以看我的另一篇文章:https://www.cnblogs.com/zhangxiaoji/p/15676589.html

什么是可打印字符?

在ASCII码中规定,0-31、128这33个字符属于控制字符,32-127这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。

所以如果要传输 不能打印的字符,那么就要进行转换,base64就是做的这种转换,也是因为base64的存在,http才能传输非文本类型数据。

三、base64如何进行转换?

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。然后将其和编码表对应,转成相应的字符。

eg:

11111111 11111111 11111111
00111111 00111111 00111111 001111111
63 63 63 63
/ / / /

关于编码表:

注意:

原文的字节最后不够3个的地方用0来补足,转换时Base64编码用=号来代替。这就是为什么有些Base64编码会以一个或两个等号结束的原因,但等号最多只有两个。

本文内容来源: 【https://blog.csdn.net/s13383754499/article/details/80914157 】

里面有一些问题,已在文中指出,如果有不对的地方,希望各位大佬帮忙指出,在此感激不尽!!!

关于 base64 编码的更多相关文章

  1. URL安全的Base64编码

    Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...

  2. Base64编码

    Base64编码 写在前面 今天在做一个Android app时遇到了一个问题:Android端采用ASE对称加密的数据在JavaWeb(jre1.8.0_7)后台解密时,居然解密失败了!经过测试后发 ...

  3. Android数据加密之Base64编码算法

    前言: 前面学习总结了平时开发中遇见的各种数据加密方式,最终都会对加密后的二进制数据进行Base64编码,起到一种二次加密的效果,其实呢Base64从严格意义上来说的话不是一种加密算法,而是一种编码算 ...

  4. 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希

    据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之 ...

  5. Base64编码【转】

    转http://www.cnblogs.com/luguo3000/p/3940197.html 开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了.实际上Base64已经简单到不能 ...

  6. 【前端攻略】:玩转图片Base64编码

    引言 图片处理在前端工作中可谓占据了很重要的一壁江山.而图片的 base64 编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的 base64 编码.标题略大,不过只是希望通过一些浅显 ...

  7. 为什么要用base64编码

    1.需求 了解为什么要使用base64对数据编码 2.理由 因为传输二进制数据的时候,网络中间的有些路由会把ascii码中的不可见字符删了,导致数据不一致.一般也会对url进行base64编码 Whe ...

  8. 图片Base64编码

    我们经常在做Jquery插件的时候需要插入一些自定义的控件,比如说按钮,而我们自己又觉着button标签很丑,而且不同浏览器显示的效果还不一样,这个时候我们需要用到图片,当然,我们可以通过img标签添 ...

  9. 浅析用Base64编码的图片优化网页加载速度

    想必大家都知道网页加载的过程,从开始请求,到加载页面,开始解析和显示网页,遇到图片就再次向服务器发送请求,加载图片.如果图片很多的话,就会产生大量的http请求,从而影响页面的加载速度.所以现在有一种 ...

  10. Base64编码原理分析

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在了解Base64编码之前,先了解几个基本概念:位.字节. 位:"位(bit)"是计算机中最小的数据单位.每一位 ...

随机推荐

  1. web必知,多终端适配

    导读 移动端适配,是我们在开发中经常会遇到的,这里面可能会遇到非常多的问题: 1px问题 UI图完美适配方案 iPhoneX适配方案 横屏适配 高清屏图片模糊问题 ... 上面这些问题可能我们在开发中 ...

  2. Linux学习 - 输入输出重定向,管道符,通配符

    一.键盘输入读取read read [选项] [变量名] -p [显示信息] 在等待read输入时,输出提示信息 -t [秒数] 指定read输入等待时间 -n [字符数] 指定read只接收n个字符 ...

  3. References in C++

    When a variable is declared as reference, it becomes an alternative name for an existing variable. A ...

  4. hive 启动不成功,报错:hive 启动报 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/mapred/MRVersi

    1. 现象:在任意位置输入 hive,准备启动 hive 时,报错: Exception in thread "main" java.lang.NoClassDefFoundErr ...

  5. linux网络相关命令之脚本和centos启动流程

    nice 功用:设置优先权,可以改变程序执行的优先权等级.等级的范围从-19(最高优先级)到20(最低优先级).优先级为操作系统决定cpu分配的参数,优先级越高,所可能获得的 cpu时间越长. 语法: ...

  6. 【Spring Framework】spring管理自己new的对象

    使用AutowireCapableBeanFactory手动注入 使用.newInstance();创建对象的话,如果其他对象都使用Spring Autowired,还需要手动创建所有依赖的Bean: ...

  7. 注册页面css版本

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. linux基本操作命令2

    复制文件 格式: cp [参数] [ 被复制的文件路径] [ 复制的文件路径] -r :递归复制  (需要复制文件夹时使用) 案例:将/root目录下的test文件夹及其内部的文件复制到/tmp中 [ ...

  9. Springboot整合MongoDB(Eclipse版本)

    IDEA版本其实也差不多的,大同小异 简单Demo地址: https://blog.csdn.net/shirukai/article/details/82152243 Springboot项目整合M ...

  10. Linux系统下安装tomcat

    一.前置条件 安装tomcat需要先安装jdk,所以没有安装jdk同学,详见参考文章 二.Linux上安装tomcat 1. 下载Apache tomcat tomcat官网下载地址 在左边,可以选择 ...