base64 encoding, in short

QP (base64-encoded) contains uppercase, lowercase, numbers, '+', '/' and '='.

Take the encoded stuff in groups of 4 characters and turn each character into a code 0 to 63 thus:

Express the four numbers thus found (all 0 to 63) in binary:

00aaaaaa 00bbbbbb 00cccccc 00dddddd

This then maps to _three_ real bytes formed thus:

aaaaaabb bbbbcccc ccdddddd

Equals signs (one or two) are used at the end of the encoded block to indicate that the text was not an integer multiple of three bytes long.