前面整理了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、解码

通过上面的编码的知识,解码就很简单了。具体可分为三步

  1. 把原有数据每个字节的最后 2 位删除
  2. 把剩余位进行拼接
  3. 按照8位一个字节进行还原

4、使用场景

我看资料Base64有很多的使用场景,但是我觉着最主要的还是避免一些 特殊字符 和 不可见字符 引起的错误

需要注意的是Base64并不是一个加密算法,它只是一个编码算法。我们上面也介绍过了,它的编码和解码都很容易。

感谢大家,我是假装很努力的YoungYangD(小羊)

参考资料:
https://en.wikipedia.org/wiki/Base64

Base64 编码整理相关推荐

  1. C# Base64编码/解码

    一.编码规则      Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24 位数据,再把这24位数据分成4 ...

  2. data类型的Url格式及Base64编码:把小数据直接嵌入到Url中

    所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些"小"的数据,可以在网页中直接嵌入,而不是从外部文件载入.例如对于img这个Tag, ...

  3. python base64编码_JS和Python实现AES算法

    1. AES原理 AES算法是典型的对称加密算法,AES原理可以学习这两篇文档: 漫画:什么是AES算法:https://www.toutiao.com/i6783550080784794124/ A ...

  4. 【转】BASE64编码规则

    Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式.(将字符串转换为二进制,从前往后,每6位一取,作为新的字节)  ...

  5. 浅谈Base64编码[转]

    问题来源 使用方法Convert.ToBase64String时候不知所以然. 所以在网上查了点资料: 浅谈Base64编码 我打赌当你见到Base64这个词的时候你会觉得在哪里见过,因为在你能够上网 ...

  6. 密码学基础:Base64编码

    文章概述: 本文目的:写这篇文章的目的主要是整理下密码学中Base64的知识点,并把它们分享出来.并且帮助初探密码学的坛友们一步一步的用C语言将Base64的编码实现出来. 阅读方法:希望大家在浏览完 ...

  7. Base64编码解析以及加密、解密实现

    一.编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24位数据,再把这24位数据分成4组,即每组6 ...

  8. C#Base64编码

    原文链接:http://www.cnblogs.com/caoyc/p/5794727.html 一. Base64的编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新 ...

  9. html音频base64编码,录音文件与Base64编码相互转换的方法

    前言 最近有几个朋友一直在问语音文件怎么转base64字符串进行发送上传,base64字符串又如何转成文件,论坛中已经有多篇问题的帖子有介绍,这里只是稍微整理,方便大家可以更加方便的使用,首先看效果: ...

  10. 详细了解base64编码和解码

    base64编码 公司技术一起开会,做任何项目都经常会讨论编码的问题.在这种时候,你就算装不了逼,也不能一脸懵逼呀.编码技术太多,但是常用的基础的必须了解,今天就详细讲解一下base64编码,包括ba ...

最新文章

  1. Aurora的安装和中文配置
  2. Netty 采用NIO 而非AIO 的理由
  3. SAP 电商云 Spartacus UI 的 urlParameter 配置原理
  4. matlab在电磁场与电磁波中的应用,matlab在电磁场与电磁波学习中的应用.docx
  5. Dalvik 堆内存管理与回收
  6. 2021年五月中旬推荐文章
  7. Out of memory error : GC overhead limit exceeded
  8. python异步调用shell_Jenkins pipeline中优雅的执行shell/python/groovy脚本
  9. 在Master page 里 CompositeControl 的事件失效了
  10. ubuntu无法激活输入法,Zendstudio无法激活中文输入法问题
  11. oracle get wkt,Bing Maps开发扩展:Oracle Spatial的空间数据渲染
  12. web前端大作业:游戏动漫网页设计(HTML+CSS+JavaScript)
  13. 一根网线两台电脑传输文件
  14. win7快捷方式去箭头_学会WIN+R,你的桌面再不需要快捷方式!
  15. springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)
  16. 【微信文章封面】微信分别设置封面图和分享图的技巧
  17. 神经网络与深度学习 相关
  18. 怎么从Chrome浏览器中导出扩展程序为crx文件?
  19. 三国人物论—44—吕蒙
  20. spring security oauth2.0 client集成第三方登录

热门文章

  1. 【雅思大作文考官范文】——第十四篇:festivals essay
  2. 赴日本常见问题QA (2转 不明原处)
  3. web大作业介绍自己的家乡_【天成好作文】胡缤云 二十年后的家乡
  4. SAP采购定价过程-条件技术介绍
  5. [原创]网页中自动连续播放音乐文件的实现
  6. (附源码)springboot菠萝大学课室预约系统分析与设 毕业设计 641656
  7. Audio Hijack Pro 3.7.4 录制应用程序内播放的声音
  8. 如何开发手机商城app? 商城APP功能
  9. Microsoft Visual Studio 2013/2015/2017 官方原版 ISO 镜像中文版下载
  10. Visual Studio 各版本下载