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=="