Lors de l'opération de sérialisation (pour sauvegarde ou transmission), le passage de la séquence binaire en mémoire en chaîne de caractères ASCII représentant les valeurs hexadécimales de cette suite d'octets conduit à un doublement de volume (chaque octet est représenté par 2 symboles hexadécimaux).
Le codage base64 offre un meilleur rendement en associant 6 bits à un symbole.
Ainsi 3 octets ( 3 x 8 bits = 24 bits) quelconques sont encodés en base64 via 4 symboles (caractères), choisis pour être compatibles avec tous les systèmes existants (confère table d'encodage). Cette même séquence binaire devrait utiliser 6 symboles hexadécimaux.
Dans le cas ou l'on souhaite encoder 4 octets quelconques ( soit 32 bits) il faudra :
=
indique que 2 bits sont ajoutés à la fin du codage. Pour cet exemple il faut, rajouter 4 bits donc doubler le symbole =
Ci-dessous une illustration d'un encodage base64 pour une séquence de 4 octets
L'encodage base64 devient d'autant plus efficace que les séquences binaires sont longues.
La table de transcodage est commune à l'ensemble des systèmes informatiques. Elle associe à chaque combinaison de 6 bits un symbole.
Valeur | Valeur binaire | Codage |
---|---|---|
0 | 000000 | A |
1 | 000001 | B |
2 | 000010 | C |
3 | 000011 | D |
4 | 000100 | E |
5 | 000101 | F |
6 | 000110 | G |
7 | 000111 | H |
8 | 001000 | I |
9 | 001001 | J |
10 | 001010 | K |
11 | 001011 | L |
12 | 001100 | M |
13 | 001101 | N |
14 | 001110 | O |
15 | 001111 | P |
16 | 010000 | Q |
17 | 010001 | R |
18 | 010010 | S |
19 | 010011 | T |
20 | 010100 | U |
21 | 010101 | V |
22 | 010110 | W |
23 | 010111 | X |
24 | 011000 | Y |
25 | 011001 | Z |
26 | 011010 | a |
27 | 011011 | b |
28 | 011100 | c |
29 | 011101 | d |
30 | 011110 | e |
31 | 011111 | f |
32 | 100000 | g |
33 | 100001 | h |
34 | 100010 | i |
35 | 100011 | j |
36 | 100100 | k |
37 | 100101 | l |
38 | 100110 | m |
39 | 100111 | n |
40 | 101000 | o |
41 | 101001 | p |
42 | 101010 | q |
43 | 101011 | r |
44 | 101100 | s |
45 | 101101 | t |
46 | 101110 | u |
47 | 101111 | v |
48 | 110000 | w |
49 | 110001 | x |
50 | 110010 | y |
51 | 110011 | z |
52 | 110100 | 0 |
53 | 110101 | 1 |
54 | 110110 | 2 |
55 | 110111 | 3 |
56 | 111000 | 4 |
57 | 111001 | 5 |
58 | 111010 | 6 |
59 | 111011 | 7 |
60 | 111100 | 8 |
61 | 111101 | 9 |
62 | 111110 | + |
63 | 111111 | / |
Caractère complément =