#####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编码(移位)
最新推荐文章于 2024-05-02 20:39:16 发布