stringbase64paddingformula

Base64 length calculation?


After reading the base64 wiki ...

I'm trying to figure out how's the formula working :

Given a string with length of n , the base64 length will be enter image description here

Which is : 4*Math.Ceiling(((double)s.Length/3)))

I already know that base64 length must be %4==0 to allow the decoder know what was the original text length.

The max number of padding for a sequence can be = or ==.

wiki :The number of output bytes per input byte is approximately 4 / 3 (33% overhead)

Question:

How does the information above settle with the output length enter image description here ?


Solution

  • 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, or 2.