Base64编码解析


计算机单位解析

一、位,字节,的定义

1.bit(Binary Digits)就是二进制数字中的位,是信息量的度量单位,为信息量的最小单位,也叫比特位存放一位二进制数,即0或1,是计算机表示数据最小的单位。 (b)

2.byte就是字节,字节(Byte)是计量单位,是计算机的基本存储单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位.通常情况下一字节等于8位,一个字节由8个相邻的二进制位组成,每个位由0或1组成。字节是计算机技术中最小的可操作存储单位。 (B)

ASCII 使用 7 位二进制 表示字符,总共可以表示 2⁷ = 128 个字符

虽然是 7 位,但通常用 8 位(1 字节)存储

二、换算

  1. ​ 1byte=8bit
  2. ​ 1KB=1024B
  3. ​ 1MB=1024KB
  4. ​ 1G=1024MB
  5. ​ 1tb=1024gb
  6. ​ 1pb=1024tb
  7. ​ 1字节=8位二进制=2个十六进制字符

三、字节与字符

  • 字符的定义:

    • 字符(Character)计算机中使用的字母、数字、字和符号,比如’A’、’B’、’$’、’&’等。

      一般在英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示。

  1. ASCII 码中,一个英文字母(不分大小写)为一个字节,一个中文汉字为两个字节。
  2. UTF-8 编码中,一个英文字为一个字节,一个中文为三个字节。
  3. Unicode 编码中,一个英文为一个字节,一个中文为两个字节。
  4. 符号:英文标点为一个字节,中文标点为两个字节。例如:英文句号 . 占1个字节的大小,中文句号 。占2个字节的大小。
  5. UTF-16 编码中,一个英文字母字符或一个汉字字符存储都需要 2 个字节(Unicode 扩展区的一些汉字存储需要 4 个字节)。
  6. UTF-32 编码中,世界上任何字符的存储都需要 4 个字节。

base64原理解析

1.base64是什么:

Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。由于 2^6=64,所以每 6 个比特为一个单元,对应某个可打印字符。3 个字节有 24 个比特,对应于 4 个 Base64 单元,即 3 个字节可由 4 个可打印字符来表示。
——维基百科

它不是一种加解密技术,是一种简单的编解码技术。

Base64 常用于表示、传输、存储二进制数据,也可以用于将一些含有特殊字符的文本内容编码,以便传输。

比如:

  1. 在电子邮件的传输中,Base64 可以用来将 binary 的字节序列,比如附件,编码成 ASCII 字节序列;
  2. 将一些体积不大的图片 Base64 编码后,直接内嵌到网页源码里;
  3. 将要传递给 HTTP 请求的参数做简单的转换,降低肉眼可读性;
    注:用于 URL 的 Base64 非标准 Base64,是一种变种。
  4. 网友们在论坛等公开场合习惯将邮箱地址 Base64 后再发出来,防止被爬虫抓取后发送垃圾邮件。

2.base64编码原理:

标准 Base64 里的 64 个可打印字符是 A-Za-z0-9+/,分别依次对应索引值 0-63。

其中:

A-Za-z0-9 共 62 个字符

+/ 用作填充字符

= 用作填充符,使数据长度对齐到 4 字节

  • 具体步骤

    1. 将输入数据转换为二进制

    2. 将待转换的字符串每三个字节分为一组,每个字节占8bit,那么共有24个二进制位。

    3. 将上面的24个二进制位每6个一组,共分为4组,每组对应 Base64 字符集中的一个字符,根据 Base64 字符集查找对应字符

    4. 如果数据长度不是 3 的倍数,则先进行补0处理,再使用 = 填充

      • 如果最后剩下 1 个字节,那么将补 4 个 0 位,编码成 2 个 Base64 字符,然后补两个 =
      • 如果最后剩下 2 个字节,那么将补 2 个 0 位,编码成 3 个 Base64 字符,然后补一个 =


    参考文章:

    https://zhuanlan.zhihu.com/p/111700349

    https://www.cnblogs.com/happy-coding/p/18747324

    https://www.runoob.com/w3cnote/byte-character.html