python base64编码实现

alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

def encode(byteArray):
    charArray = [0] * (((len(byteArray) + 2) // 3) * 4)
    val = 0
    groupIndex = 0
    groupCount = 0
    for index, byte in enumerate(byteArray):
        if index % 3 == 0:
            val = (0xFF & byte)
            groupCount += 1
        elif index % 3 == 1:
            val <<= 8
            val |= (0xFF & byte)
            groupCount += 1
        elif index % 3 == 2:
            val <<= 8
            val |= (0xFFFF & byte)
            for i in range(4):
                charArray[groupIndex * 4 + (3 - i)] = alphabet[val & 0x3F]
                val >>= 6
            groupIndex += 1
            groupCount = 0
    else:
        if groupCount > 0:
            for i in range(3 - groupCount):
                val <<= 8
            for j in range(4):
                if j < 3 - groupCount:
                    charArray[groupIndex * 4 + (3 - j)] = '='
                    val >>= 6
                else:
                    charArray[groupIndex * 4 + (3 - j)] = alphabet[val & 0x3F]
                    val >>= 6        
    return "".join(charArray)
            

s = 'adfdasf'
t = encode(s.encode())
assert t=="YWRmZGFzZg=="
    

 

posted @ 2017-10-10 01:47  涉谷猫猫  阅读(535)  评论(0编辑  收藏  举报