Base64
Van Wikipedia
Base64 is een manier om binaire code te converteren naar ASCII-tekens. De codering wordt onder meer gebruikt in e-mail om bijlagen te versturen (zie MIME), maar ook op andere manieren wordt het op internet gebruikt. De conversie naar ASCII is noodzakelijk omdat veel protocollen op internet gebouwd zijn op het gebruik van (7-bits) ASCII-tekens en niet van 8-bits binaire code.
De inhoud van een binair bestand wordt vaak getoond in hexadecimale vorm, met 16 verschillende tekens (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E en F), waarbij elk teken 4 bits vertegenwoordigt. Base64 is een 6-bits codering. Dat betekent dat er 26 = 64 verschillende tekens zijn, vandaar de naam base64. Base64 is daardoor korter dan een hexadecimale codering, ongeveer 33% langer dan de oorspronkelijke 8-bits codering.
Het gemeenschappelijke voordeel van base64- en hexadecimale codering is dat alle tekens visueel onderscheidbaar zijn. Dat zijn niet alle tekens die onder de ASCII-codering vallen (zoals de eerste 33 ASCII-tekens (waar ook de spatie en de carriage return onder vallen)). Een base64-gecodeerd document zou kunnen worden uitgeprint op papier, om later weer te worden ingelezen naar de computer met behulp van OCR.
De gebruikte tekens zijn de tekens in deze base64-tekenreeks: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
[bewerk] Omzetten
Het met de hand omzetten van een 8-bit tekenreeks naar base64 gaat als volgt:
- De tekens worden omgezet in het binair
- Er wordt steeds een groepje van zes bits genomen
- De groepjes bits worden omgezet in decimaal
- Per decimaal getal wordt het teken genomen dat op positie (n+1) in de eerder genoemde base64-tekenreeks staat. De getallen variëren van 0 tot en met 63.
Het komt niet altijd uit, aangezien het aantal bits een 6-voud moet zijn. Als dat niet het geval is, worden er, afhankelijk van het aantal benodigde extra bits, 2 of 4 nullen er achter gezet. Als er 2 nullen zijn toegevoegd, wordt "=" achter het eindresultaat gezet, bij 4 nullen komt er "==" achter. Zo is de lengte van een base64-tekenreeks altijd een 4-voud.
Een voorbeeld met de tekenreeks "π ∈ ℝ", gecodeerd als UTF-8:
- 11001111100000000010000011100010100010001000100000100000111000101000010010011101
- 110011 111000 000000 100000 111000 101000 100010 001000 001000 001110 001010 000100 100111 010000 (vier nullen zijn toegevoegd)
- 51 56 0 32 56 40 34 8 8 14 10 4 39 16
- z 4 A g 4 o i I I O K E n Q
In base64 is het dus z4Ag4oiIIOKEnQ== (twee "="-tekens zijn toegevoegd, om de vier nullen die eerder toegevoegd zijn). Een computer zet de getallen niet eerst om in decimaal, omdat computers zelf in met het binaire systeem werken.
Met een Firefox-extensie kun je de gegevens live omzetten van en naar Base 64 en andere omzettingscoderingen.
[bewerk] Zie ook
- Uuencode en BinHex, andere manieren om binaire code om te zetten tot ASCII.
- Inline image, gebruik van base64 om een plaatje in HTML-code onder te brengen.