import re
all = b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
dic = dict(zip(all, range(64)))
regex = re.compile(b"[A-Za-z\d+/]{2,4}={0,2}")
def base64(src:bytes):
ret = bytearray()
lenght = len(src)
# 判断src的长度是否正确
if lenght % 4 != 0:
return
step = 4
for i in range(0, lenght, 4):
use = src[i:i+step]
num = 0
if i + step == lenght:
m = regex.fullmatch(use)
if m is None:
return
# 进行转换
for c, j in enumerate(reversed(use)):
index = dic.get(j, None)
if index:
num += index << c * 6
elif index == 0:
pass
else:
if step + i != lenght:
return
ret.extend(num.to_bytes(3, "big"))
return ret
base64解码(Python)
最新推荐文章于 2022-11-05 13:20:40 发布