ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

base64编解码即使用

2021-06-08 22:35:16  阅读:195  来源: 互联网

标签:编解码 Base64 字节 二进制 base64 0100 使用 ASCII 十进制


base64 编解码及使用

前言

大部分寻找 base64,只是为了使用而已,所以先说如何使用。
不用寻找相关的 base64 库,不用自己处理编解码,直接调用浏览器自身 API。既然减少完全不必要加载的 js 文件。

应用

  1. Base64 解码

    window.atob

例如:

window.atob('aGVsbG8gd29yZA==')
"hello word"
  1. Base64 编码

    window.btoa

例如:

window.btoa('hello word')
"aGVsbG8gd29yZA=="

就是这么简单!

兼容性: IE10+ 以后所有现代浏览器都支持,所以放弃 IE 吧!同时,不支持Unicode字符的编码, 需配合encodeURIComponent、decodeURIComponent来使用。


这是一条迷人的分割线


base64 是什么?

引用百度百科的话:

Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来表示二进制数据的方法。可查看 RFC2045 ~ RFC2049,上面有 MIME 的详细规范。
Base64 编码是从二进制到字符的过程,可用于在 HTTP 环境下传递较长的标识信息。采用 Base64 编码具有不可读性,需要解码后才能阅读。

有点拗口,即 base 是一种编码方式,不是加密,不是加密,不是加密。

白话:选出 64 个字符集(实际上 65 个, A-Z,a-z,0-9,+,/,再加垫字符 = ),并将内容按照一定的规则转换成字符集的字符。

索引表:

64 个 字符

A~Z -> 0~25
a~z -> 26~51
0~9 -> 52~61
+ -> 62
- -> 63

编码规则:

  1. 每三个字节为一组,一共是 24 个二进制位。

  2. 将 24 个二进制位分为四小组,每小组 6 个二进制位。

  3. 在每小组前面加上 00,构成 32 为二进制,即 4 个字节。

例如:

"Cat"

C  ASCII 十进制:67  二进制:0100 0011
a  ASCII 十进制:97  二进制:0110 0001
t  ASCII 十进制:116 二进制:0111 0100

合起来为:0100 0011 0110 0001 0111 0100
分为四组:010000 110110 000101 110100
添加前缀:00010000 00110110 00000101 00110100
对应的十进制值为:16 54 5 54

对应上面的索引表:Q2F0

  • 字节数不足 3 的情况:

    • 2 个字节的情况:

      2 个字节的一共 16 个二进制位,按照上面的规则,转成三组,分别为6,6,4,最后一组除了前面加两个 0 以外,后面也要加两个 0。这样得到一个三位的 Base64 编码,同时在末尾补上一个"="号。

      'Hi'
      
      H ASCII 十进制:72  二进制:0100 1000
      i ASCII 十进制:105 二进制:0110 1001
      
      即:0100 1000 0110 1001
      拆:010010 000110 1001
      补:00010010 00000110 00100100
      组:18 6 36
      对应索引:SGk=
      
      
    • 1 个字节的情况:

      将8位二进制,分为2组,6和2,最后一组2为,前面补两个0,后面补4个0。构成16位两个字节, 并在末尾补上两个==号。

          'H'
          
          H ASCII 十进制:72  二进制:0100 1000
      
          拆:010010 00
          补:00010010 00000000
          组:18 0
          对应索引:SA==
      
      

其他字符自询搜索 ASCII 表

解码

解码其实就是一个逆推的过程。

  1. 每4个字符为一组,查找字符其索引值。

  2. 将其索引值,转为二进制,并将每个二进制前面的00去掉

  3. 将剩下的24位二进制转为分为3份,组成3个字节

  4. 查找ASCII表,组成字符串。

标签:编解码,Base64,字节,二进制,base64,0100,使用,ASCII,十进制
来源: https://www.cnblogs.com/lsAxy/p/14864753.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有