Python 之 Base64 编码介绍及自定义函数进行编码

本文介绍了Base64编码的基本概念,详细解释了编码规则,并提供了两种实现字符串Base64编码的方法,包括编码思路和具体代码示例。

1、 Base64 介绍

  • 基于64个可打印字符来表示二进制数据
  • Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法
  • Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读
  • Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本

2、Base64 编码规则

  • Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3
  • 把3个字节变成4个字节 / 每76个字符加一个换行符 / 最后的结束符也要处理
  • 核心思想如下:
1、每3个字节断开,拿出一个3个字节,每6个bit断开成4段(24bit)
2、因为每个字节其实只占用了6位,因此有了Base64(2**6)的编码表
3、每一段当作一个8bit,看它的值,这个值就是Base64编码表的索引值,找到对应字符
4、再取三个字节,同样处理,直到最后
5、正好3个字节,处理方式如上
6、剩1个字节或者2个字节,用0补满3个字节,全部补0的字节用‘=’表示
7、字符串‘`’反引号也是一个字节,8位被断开,前6位和后2

3、Base64 字符表

在这里插入图片描述

4、Base64 示例

#转换前 
101011 01,1011 1010,01 110110
# 转换后 
00101011, 00011011 ,00101001 ,00110110
# 十进制 
43 27 41 54
# 对应码表中的值 
r b p 2
# 所以上面的24位编码,编码后的Base64值为 rbp2

5、使用Python实现对一段字符串进行Base64编码 - 1

5.1 思路

import base64
base64.b64encode(b'abc')
# b'YWJj'
   a b c
0x616263
# binary
01100001 01100010 01100011
# 每 6bit 进行分段
  011000    010110    001001    100011
# 补0,成四字节
00011000  00010110  00001001  00100011
# 十进制
      24        22         9        35  # index
      Y         W          J        j

011000010110001001100011  >> 18
011000 => 24 => Y

011000010110001001100011  >> 12
011000010110 & 0x3F  
00000
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值