Base64 length calculation?
4 * n / 3
gives unpadded length.
And round up to the nearest multiple of 4 for padding, and as 4 is a power of 2 can use bitwise logical operations.
((4 * n / 3) + 3) & ~3
Each character is used to represent 6 bits (log2(64) = 6
).
Therefore 4 chars are used to represent 4 * 6 = 24 bits = 3 bytes
.
So you need 4*(n/3)
chars to represent n
bytes, and this needs to be rounded up to a multiple of 4.
The number of unused padding chars resulting from the rounding up to a multiple of 4 will obviously be 0, 1, 2 or 3.