Base64的使用?

简介: Base64是一种将二进制数据转为64个可打印字符的编码方式,每3字节原始数据转为4字节Base64编码,常用于小图片嵌入、减少HTTP请求,但体积增大约1/3。

4.Base64的使用?

4.1 概念

Base64就是一种基于64个可见字符(26个大写字母,26个小写字母,10个数字,1个+,一个 / 刚好64个字符)来表示二进制数据的表示方法。

[!NOTE]
扩展:不可见字符其实并不是不显示,只是这些字符在屏幕上显示不出来,比如:换行符、回车、退格......字符。

Base64字符表中的字符原本用6个bit就可以表示,现在前面添加2个0,变为8个bit,会造成一定的浪费。因此,Base64编码之后的文本,要比原文大约三分之一

4.2 原理

  • 第一步,将待转换的字符串每三个字节分为一组,每个字节占8bit,那么共有24个二进制位。
  • 第二步,将上面的24个二进制位每6个一组,共分为4组。
  • 第三步,在每组前面添加两个0,每组由6个变为8个二进制位,总共32个二进制位,即四个字节。
  • 第四步,根据Base64编码对照表(见下图)获得对应的值。

[!NOTE]
两个字节:两个字节共16个二进制位,依旧按照规则进行分组。此时总共16个二进制位,每6个一组,则第三组缺少2位,用0补齐,得到三个Base64编码,第四组完全没有数据则用“=”补上。因此,上图中“BC”转换之后为“QKM=”;
一个字节:一个字节共8个二进制位,依旧按照规则进行分组。此时共8个二进制位,每6个一组,则第二组缺少4位,用0补齐,得到两个Base64编码,而后面两组没有对应数据,都用“=”补上。因此,上图中“A”转换之后为“QQ==”;

4.3 作用

  • 用于减少HTTP请求
  • 适用于小图片
  • base64编码图片之后的体积约为原图的4/3
相关文章
|
1天前
|
JSON 前端开发 JavaScript
Ajax和网络
Ajax(异步JavaScript和XML)是一种实现网页局部刷新的技术,通过XMLHttpRequest对象实现客户端与服务器异步通信。它不刷新整个页面即可更新数据,提升用户体验、减轻服务器负担。Ajax遵循同源策略,跨域请求需采用JSONP或CORS等解决方案。支持GET和POST方法,前者用于获取数据,后者提交数据更安全。尽管存在对搜索引擎不友好、破坏后退机制等缺点,但仍是现代Web开发的核心技术之一。
|
1天前
|
JSON Shell Linux
08-Registry搭建docker私仓
本文介绍如何使用Docker Registry搭建私有镜像仓库。通过拉取官方Registry镜像并运行,配置HTTP访问支持,实现镜像的推送、拉取及验证。涵盖镜像打标、上传、查看目录等操作步骤,适用于CentOS 6/7系统,助力企业构建安全可控的本地镜像仓库。
|
1天前
|
JavaScript 前端开发 算法
React框架
React 是一个用于构建用户界面的 JavaScript 库,核心特性包括虚拟 DOM、组件化开发、单向数据流和 JSX 语法。它通过 diff 算法实现高效更新,支持服务端渲染,提升性能与 SEO。React 组件有完整生命周期,适合在 `componentDidMount` 中发起请求,通过 `setState` 异步更新状态。支持高阶组件、受控/非受控组件及纯函数组件,结合 Redux 可实现状态集中管理,广泛应用于大型前端项目。
|
1天前
|
关系型数据库 Shell 应用服务中间件
13-Docker网络
Docker网络详解:介绍bridge、host、none和container四种网络模式,原理及使用场景。通过自定义网络实现容器间服务名通信,替代已弃用的--link方式,提升可维护性与灵活性。
|
1天前
|
Java Shell Docker
12-Docker发布微服务
本文介绍如何将SpringBoot微服务项目打包并发布到Docker容器。内容涵盖创建Maven项目、编写Controller、生成jar包、编写Dockerfile、构建镜像及启动容器的完整流程,实现服务在Docker中的运行与端口映射。
|
1天前
|
应用服务中间件 Shell nginx
11-Dockerfile
Dockerfile是构建Docker镜像的脚本文件,包含FROM、RUN、CMD等指令,按顺序执行,每条指令创建新的镜像层。FROM指定基础镜像,RUN在构建时运行命令,CMD设置容器启动命令,ENTRYPOINT则定义不可被覆盖的启动命令。ADD/COPY复制文件,EXPOSE暴露端口,WORKDIR设置工作目录。构建时通过docker build生成镜像,未命名镜像可能产生虚悬镜像(<none>),可用docker image prune清理。
|
1天前
|
存储 NoSQL 算法
10-Docker安装Redis
本文介绍如何使用Docker安装Redis 6.0.8,涵盖单机版与集群部署。重点讲解Redis集群的哈希槽分区机制、一致性哈希算法原理及3主3从集群搭建步骤,并演示主从扩容缩容操作,帮助实现高可用分布式缓存架构。
|
1天前
|
Java Maven 数据安全/隐私保护
Nexus仓库
Nexus仓库是Sonatype推出的开源制品管理工具,支持Maven、Npm、Docker等格式。本文介绍其在Linux和Docker环境下的安装配置,包括JDK部署、OSS版下载、用户权限、匿名访问设置,以及仓库创建与上传下载操作,涵盖密码重置、数据持久化及脚本批量导入等内容,助力搭建高效私有仓库。
|
1天前
|
NoSQL 关系型数据库 MySQL
14-Docker-compose容器编排
本文介绍如何使用Docker-compose进行容器编排,通过编写`docker-compose.yml`文件统一管理SpringBoot、Redis和MySQL多个容器服务,实现一键部署与网络互联。
|
1天前
|
监控 数据可视化 Shell
15-Portainer轻量级图形化监控
Portainer是一款轻量级Docker可视化管理工具,支持单机与集群环境,提供图形化界面,便于管理镜像、容器、网络等资源。通过Docker运行,开源版(CE)免费使用,安装便捷,适合初学者与开发者高效管理Docker。