Base64 编码整理
前面整理了websocket的知识,其中有一个base64编码的小知识,今天就对这个小知识进行一下整理。
1、Base64
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。因为只有64种字符,使用6位就可表示过来,所以base64是每6位一个单元,对应某个可打印字符。
哪些是可打印字符?其实就是 A-Z,a-z,0-9,+,/ 这64个字符。如下图所示:
Base64可以将任何数据都进行编码,因为计算机本身就是二进制存储的。
2、编码原理
下面举几个例子,边看例子边讲解:
对字符串 Man进行编码,原有数据占三个字节,每个字节8位。转换过程如下图所示:
编码过程是先进行6位分组,但是计算机是按照字节存储的,最少8位,就在最高的 2 位进行补 0,所以编码后的数据比原始数据多 1/3 的空间。最终,字符串 [ Man ] 经过Base64编码变成了字符串 [ TWFu ],由之前的 3 个字节变成了 4 个字节。
如果原有的字符串不是6的倍数呢?
这个也是通过补位进行实现,如果不足6的倍数,剩下的空位补 0。如果没有匹配的字符,则使用[ = ] 字符填充。如下图所示:
这样,原有的字符串 [ Ma ] 经过Base64编码变成了字符串 [ TWE= ]。
3、解码
通过上面的编码的知识,解码就很简单了。具体可分为三步
- 把原有数据每个字节的最后 2 位删除。
- 把剩余位进行拼接。
- 按照8位一个字节进行还原。
4、使用场景
我看资料Base64有很多的使用场景,但是我觉着最主要的还是避免一些 特殊字符 和 不可见字符 引起的错误。
需要注意的是Base64并不是一个加密算法,它只是一个编码算法。我们上面也介绍过了,它的编码和解码都很容易。
感谢大家,我是假装很努力的YoungYangD(小羊)。
参考资料:
https://en.wikipedia.org/wiki/Base64
Base64 编码整理相关推荐
- C# Base64编码/解码
一.编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24 位数据,再把这24位数据分成4 ...
- data类型的Url格式及Base64编码:把小数据直接嵌入到Url中
所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些"小"的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Tag, ...
- python base64编码_JS和Python实现AES算法
1. AES原理 AES算法是典型的对称加密算法,AES原理可以学习这两篇文档: 漫画:什么是AES算法:https://www.toutiao.com/i6783550080784794124/ A ...
- 【转】BASE64编码规则
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式.(将字符串转换为二进制,从前往后,每6位一取,作为新的字节) ...
- 浅谈Base64编码[转]
问题来源 使用方法Convert.ToBase64String时候不知所以然. 所以在网上查了点资料: 浅谈Base64编码 我打赌当你见到Base64这个词的时候你会觉得在哪里见过,因为在你能够上网 ...
- 密码学基础:Base64编码
文章概述: 本文目的:写这篇文章的目的主要是整理下密码学中Base64的知识点,并把它们分享出来.并且帮助初探密码学的坛友们一步一步的用C语言将Base64的编码实现出来. 阅读方法:希望大家在浏览完 ...
- Base64编码解析以及加密、解密实现
一.编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24位数据,再把这24位数据分成4组,即每组6 ...
- C#Base64编码
原文链接:http://www.cnblogs.com/caoyc/p/5794727.html 一. Base64的编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新 ...
- html音频base64编码,录音文件与Base64编码相互转换的方法
前言 最近有几个朋友一直在问语音文件怎么转base64字符串进行发送上传,base64字符串又如何转成文件,论坛中已经有多篇问题的帖子有介绍,这里只是稍微整理,方便大家可以更加方便的使用,首先看效果: ...
- 详细了解base64编码和解码
base64编码 公司技术一起开会,做任何项目都经常会讨论编码的问题.在这种时候,你就算装不了逼,也不能一脸懵逼呀.编码技术太多,但是常用的基础的必须了解,今天就详细讲解一下base64编码,包括ba ...
最新文章
- Aurora的安装和中文配置
- Netty 采用NIO 而非AIO 的理由
- SAP 电商云 Spartacus UI 的 urlParameter 配置原理
- matlab在电磁场与电磁波中的应用,matlab在电磁场与电磁波学习中的应用.docx
- Dalvik 堆内存管理与回收
- 2021年五月中旬推荐文章
- Out of memory error : GC overhead limit exceeded
- python异步调用shell_Jenkins pipeline中优雅的执行shell/python/groovy脚本
- 在Master page 里 CompositeControl 的事件失效了
- ubuntu无法激活输入法,Zendstudio无法激活中文输入法问题
- oracle get wkt,Bing Maps开发扩展:Oracle Spatial的空间数据渲染
- web前端大作业:游戏动漫网页设计(HTML+CSS+JavaScript)
- 一根网线两台电脑传输文件
- win7快捷方式去箭头_学会WIN+R,你的桌面再不需要快捷方式!
- springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)
- 【微信文章封面】微信分别设置封面图和分享图的技巧
- 神经网络与深度学习 相关
- 怎么从Chrome浏览器中导出扩展程序为crx文件?
- 三国人物论—44—吕蒙
- spring security oauth2.0 client集成第三方登录
热门文章
- 【雅思大作文考官范文】——第十四篇:festivals essay
- 赴日本常见问题QA (2转 不明原处)
- web大作业介绍自己的家乡_【天成好作文】胡缤云 二十年后的家乡
- SAP采购定价过程-条件技术介绍
- [原创]网页中自动连续播放音乐文件的实现
- (附源码)springboot菠萝大学课室预约系统分析与设 毕业设计 641656
- Audio Hijack Pro 3.7.4 录制应用程序内播放的声音
- 如何开发手机商城app? 商城APP功能
- Microsoft Visual Studio 2013/2015/2017 官方原版 ISO 镜像中文版下载
- Visual Studio 各版本下载