基本概念

  • hex也称为base16,意思是使用16个可见字符来表示一个二进制数组,编码后数据大小将翻倍,因为1个字符需要用2个可见字符来表示。

  • base32,意思是使用32个可见字符来表示一个二进制数组,编码后数据大小变成原来的8/5,也即5个字符用8个可见字符表示,但是最后如果不足8个字符,将用=来补充。

  • base64,意思是使用64个可见字符来表示一个二进制数组,编码后数据大小变成原来的4/3,也即3个字符用4个可见字符来表示。

  • Base64简介

    Base64是一种基于64个可打印字符来表示二进制数据的表示方法。base64编码一般有下面两个用途:

    a)所有的二进制文件,都可以因此转化为可打印的文本编码(都变成ASCII码可打印字符),使用文本软件进行编辑;

    b)能够对文本进行简单的加密。

    说白了,一段由0和1组成的串或文件,都能按照base64的编码规则转换成一段由64个字符任意组合的串。

备注:

(1)Base64将三个字节转化成四个字节,因此Base64编码后的文本,会比原文本大出三分之一左右

(2)对于不满3个字节的东东,就需要加上base64编码中的垫字符来补充

(3)Base64编码是可逆的,所以有Base64编码encode和解码decode

(4)Base64主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输(因为一些二进制字符在传输协议中属于控制字符,不能直接传送)。另外,还有一些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。base64其实不是安全领域下的加密解密算法。虽然有时候经常看到所谓的base64加密解密。其实base64只能算是一个编码算法,对数据内容进行编码来适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是这种方式很初级,很简单。

使用场景

有些小伙伴可能有疑问,为啥要把 "hello world!" 这么明白的东西变成一串看不懂的东西,其实是这个例子使用了可见字符而已,而有很多字符是不可见的,我们需要把这些不可见字符变成可见字符。那为啥要变成可见字符?你是看着乱码舒服还是看着可见字符舒服呢?其实不仅仅舒不舒服的问题,有些时候还必须要用可见字符,例如在网络中传输数据时,不同路由器对于不可见字符的处理是不同的,因此可能出现数据错误,因此还必须使用可见字符。

区别与联系

  • 区别主要就是空间效率的区别,base64是具有比较高的空间效率的。当然,hex编码不区分大小写,但是base32与base64是区分的。

  • 联系就是大家都是一种稳定的把二进制数组变成可见字符的编码方式。

  • base32中StdEncoding和HexEncoding所使用的字符不同,但是具体其他区别我也不是很清楚。

  • base64中URLEncoding一般用于编码URL

Base64 | Base32 | Base16编码和解码相关推荐

  1. 便利贴--41{js - base64 - _utf8_ 的编码和解码}

    便利贴--41{便利贴--41{js - base64 - _utf8_ 的编码和解码}} 编码 解码 utf8 合并 编码 this.encode = function (input) {_keyS ...

  2. C# Base64方式的编码与解码

    编码与解码方法: ///编码public static string EncodeBase64(string code_type, string code){string encode = " ...

  3. signature=b8cae5ae994df93c3fedf622c2a51ac5,javascript中的Base64、UTF8编码与解码详解

    Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0填充 ...

  4. Java 8中的Base64编码和解码

    转自:https://juejin.im/post/5c99b2976fb9a070e76376cc Java 8会因为将lambdas,流,新的日期/时间模型和Nashorn JavaScript引 ...

  5. php 64位编码解码,php base64 编码和解码

    /** * 自定义规则方式编码和解码 **/ public function test_changinttoStr () { $intvalue1 = 1232344234; $intStr = '' ...

  6. javascript中的Base64.UTF8编码与解码详解

    javascript中的Base64.UTF8编码与解码详解 本文给大家介绍的是javascript中的Base64.UTF8编码与解码的函数源码分享以及使用范例,十分实用,推荐给小伙伴们,希望大家能 ...

  7. Vue中base64编码和解码

    推荐一个不错的学习资料库 Vue中base64编码和解码 1.在项目更目录下执行命令,安装 npm install --save js-base64 2.在使用的项目引入 let Base64 = r ...

  8. 用 JS 进行 Base64 编码、解码

    从IE10+浏览器开始,所有浏览器就原生提供了 Base64 编码.解码方法,不仅可以用于浏览器环境,Service Worker 环境也可以使用. 方法名就是 atob 和 btoa ,具体语法如下 ...

  9. Python-base编码和解码方法

    文章目录 前言 一.函数介绍 二.base16 [1]. 编码 [2]. 解码 三.base32 [1]. 编码 [2]. 解码 四.base64 [1]. 编码 [2]. 解码 前言 仅介绍pyth ...

  10. base64/32/16编码

    base64就是一种编码格式,使用64个可见字符来表示二进制数据,可以将任意二进制数据编码成字符串.base64编码把3个8位字节转化为4个6位的字节,6位2进制能表示的最大十进制数是64,所以使用6 ...

最新文章

  1. ntu ERIC 课程笔记
  2. 轻松学习,高效学习,那些年大学玩命的学习方法
  3. visual studio 2005没有chart空间_彭啸专访:2005年的国少跳级生 天赋+汗水造就成功...
  4. 疫情期间用掉了1400亿个!二维码会被人类扫完吗?
  5. Laravel 日期时间处理包 Carbon 的应用
  6. 动态换ip如何实现_动态IP可以实现哪些功能及用途
  7. 【BZOJ】2395: [Balkan 2011]Timeismoney
  8. pwd命令是什么的缩写_手机学编程(2)目录管理命令
  9. spring事务配置的两种方式
  10. 为了运行内存多两G,多花几百块值不值?
  11. 创建oracle管理用户名和密码是什么情况,Oracle创建时默认创建的用户以及密码
  12. 开发宝典:数据库设计技巧,你知道几个?
  13. 免费在线语音识别成文字
  14. Python基础 4 字符串的变形 判断
  15. linux系统windows模拟器下载,Linux开源模拟器Wine 0.9.54版下载
  16. 单片机定时器计数原理
  17. Necklace of Beads
  18. RNN-人名分类器算法
  19. 新手如何做网站?成都网站建设达人浅析——网站制作新手教程
  20. 从零开始开发一个自动抓取教务系统课表等信息并动态显示的安卓课程表APP,原理分析及功能实现完美教程

热门文章

  1. 视频教程-C语言编程初级入门-C/C++
  2. android systrace log,Android优化之Systrace
  3. STM32单片机USB扫码枪开发笔记
  4. 设计模式(一) 六大原则
  5. w7计算机应用放大按键,设置Win7放大功能 老年人用电脑更方便
  6. 博图注册表删除方法_arcgis 10.2安装时error1606以及error2753解决方法记录
  7. Win7批量离线更新补丁方法
  8. 文档数据库mongodb与列式数据库hbase详细比较
  9. 200Smart PLC 与丹佛斯变频器MODBUS RTU通讯实例
  10. 转换小写金额为大写金额