I am writing a base64 encoding method to convert big integer to base64. However, when I test my method I find result is strange. While encode_b64(int('908540701891980503')) method gave me ybyPRoQW0X, however I expect the right ybyPRoQWzX.
def encode_b64(n):
table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'
result = []
temp = n
if 0 == temp:
return '0'
else:
while 0 < temp:
idx = temp % 64
result.append(table[idx])
temp /= 64
temp = int(temp)
return ''.join([x for x in reversed(result)])
I have checked several time, but I cannot found logical error. What's wrong with my code?