Outils pour utilisateurs

Outils du site


software:formats:base64

L'encodage Base64

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 :

  • Utiliser 5 symboles base64 pour encoder les 30 premiers bits ( 5 x 6 bits = 30 bits). Il restera alors 2 bits à encoder;
  • On ajoute des bits de bourrage aux 2 bits restant pour former les 6 derniers bits à encoder. Le symbole = 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

Sur les courtes séquences binaires, l'encodage en base64 n'est pas meilleur que leur représentation en chaîne de caractères hexadécimaux. Dans l' exemple ci-dessus il faut également 8 symboles en base64 pour encoder les 4 octets.

L'encodage base64 devient d'autant plus efficace que les séquences binaires sont longues.

Table d'encodage

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 =

Exemples

Références

software/formats/base64.txt · Dernière modification : 2023/05/29 15:18 de yoann