#####Base64编码
def Base64_print(src:bytes):
####直接定义字节类型,方便查找
Base = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
ret = bytearray() ###得到一个空字节列表
length = len(src)
r = 0
###3个字节一切片,不足3个字节,则补充0,用r计算0的数量,最后加几个=号
for i in range(0,length,3):
if i + 3 <= length:
l_byte = src[i:i+3]
else:
_l_byte = src[i:]
r = 3 -len(_l_byte)
l_byte = _l_byte + '\x00'*r
####将字节转换为十进制,大端模式
k = int.from_bytes(l_byte,'big')
###3个字节变为4个字节,以6位一段,0x3F 16进制转换2进制为0011 1111,而11 1111与任何想二进数相与得到本身,前面与00都为0
for i in range(18,-1,-6):
index = k >> i & 0x3F
ret.append(Base[index])
####末尾添加'='号
for i in range(1,r+1):
ret[-i] = 0x3D
return ret
test = 'abc'
q = Base64_print(test.encode())
print(q)
Base64编码(移位)
最新推荐文章于 2025-10-20 08:35:55 发布
1604





