Billet:Base64
Codage des nombres : de l'hexadécimal à la base 64
Quand on veut coder des nombres (entiers) sous une forme aisément transmissible, se pose rapidement la question d'un codage compatible avec l'écriture de textes (donc de pages Web) qui supportent mal la présence de caractères « nuls » (ASCII 0), entre autres. On pourrait évidemment écrire les nombres en chiffres décimaux ou binaires et transcrire ces chiffres dans notre texte comme suite de caractères, mais une telle représentation est fort inefficace ; qui plus est, pour les chiffres décimaux reste en suspens la nécessité de séparer les chiffres relatifs aux nombres successifs. Il est un peu moins mauvais de représenter les nombres en base 16 c’est-à-dire au format hexadécimal dont les « chiffres » sont 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Un octet est alors représenté par deux chiffres hexadécimaux, ce qui revient à doubler la place occupée.
Il existe un codage plus astucieux, nommé Base 64, qui consiste à rassembler les octets à coder par groupe de 3 (soit 24 bits) puis à coder ces 24 bits comme 4 groupes de 6 bits ; chacun de ces groupes est alors recodé comme un caractère pouvant être une lettre majuscule, minuscule ou un chiffre ou l’un des deux signes + et / .
Il est assez correctement décrit dans la page suivante de Wikipedia : http://en.wikipedia.org/wiki/Base64 .
Ce codage (standardisé) est très utilisé dans les échanges de courrier électronique (pour les pièces jointes) et peut fournir la base d’une ou deux séances de TP.
A titre d’exemple, la petite image ci-dessous
peut être directement introduite dans une page HTML, de la manière suivante :
<img src="data:image;base64, /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUEBAUEAwUFBAUGBgUGCA4JCAcHCBEMDQoOFBEVFBMR ExMWGB8bFhceFxMTGyUcHiAhIyMjFRomKSYiKR8iIyL/2wBDAQYGBggHCBAJCRAiFhMWIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiL/wAARCAAwADADASIA AhEBAxEB/8QAGwAAAgIDAQAAAAAAAAAAAAAABwgDBgABBAL/xAAyEAACAQMDAgQEBAcBAAAAAAAB AgMEBREABgcSITFBUWETFHGxImKRoRVCUlOB0eHw/8QAGAEBAQEBAQAAAAAAAAAAAAAAAwYFAgD/ xAAsEQABAgUCAwgDAQAAAAAAAAABAhEAAwUSMSFhBBMUBhUiMlGBoeEWQVJx/9oADAMBAAIRAxEA PwBytRzTR08LSzyJHGgyzuwAH1J1k00dPBJNMwSKNSzsfAADJOlK5J5Krt13iWmpJXhtcLlYoVOO v8zeujWsIDmNej0ebVJpQgskZPp9webpzDtG1zvE1e1Q6/2E6hn66y2cw7QuTqn8QamdjgCojKj9 RkaXC3ccXu47PrtxOiwUNLGZF+MSGmHn0/8Au+uTZOybjvS+JS0ClIFIM07A9MS/X10PNW40zFUe zdIEpaucfB5i40LYZvh/mHVgniqqeOankWSGQdSOhyCPbUulqtW8YeMOQnsNLdXulg6lWZmAzG3n 0/Q/r++mRgmjqaeOeBw8Uqh0YeBBGQdOlQVEhUabM4IpVlCw6SzONwcHaKJy/cprbxlXtTt0vOyw k+xPf7apnG/ENjrdr269XsS1dVVATCPq6UUZ7Ajz1c+YLe9w4wuPwwS1OVmwB5A4P7HVL435fsFH ta3Wa9PJSVVKohVypZGGexz5f50amv8AFGvwXV9znonuvN1uWtDbtBI3+iQ8Y32OJFSNKJlVVGAB jGBoNWiu3S3E1HbNm7Yqac1Sn5m4p4zjOMr5j00Y9/zRz8XX2WF1kiejYq6HIYe2gxaaXdi8S0d0 2bueepFKp+Zt0YGacAk4HiT27/715efaOqM3Rm61+YPPda9pZ23/AK0feBRuDaO4NuxJU7gttRTx St0h5F7E+OM/Qaafhm7yXbjChMw/FSs0Ab1A7j740q+4d5bh3HClLfrnPURxN1LG7dgfDOMaabha 2z23i2hFSvS1Q7SgflOAPtrmV5tMRudqhN7sR1Nt92lrszHD7Z9oINRTxVdLLBUIHilUq6sMgg6U jk7jOr2jdXqaGOSa0zNmOULnoP8ASfT6+fjpvNRTwRVUDw1MSSwuMMkihgR7g6VaAsaxH0esTaXN vSHScj1+4S63ck3q2bMuG3WZZ6Crj+GpmyWhGe/T/wB1xbK3zc9kXlau3uXhYgTU7H8Mo9CPXTP3 ThnZ91qfjNQPTt5ink6QffBzrxbuFNm2+qWf5GSoZfBZ5Mr+gA0XLU41xFZ+SUcyVpMk+PVQYan/ AF87gb5gO2TZjcm8iS3eit0ttsJcSTfEAALfzBcdu/p9tNJBBHS00UFOgSGJAiIPBQBgDWqemhpK aOCliSKGMYSNFwFHsNTaZKWiQqdUmceUpZkIDJDuw3P7O8f/2Q==">
Voir à ce propos l'article suivant : http://www.bellami.fr/encoder-ses-images-en-base64