Base64
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 binaire code van 8 bits.

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 vier bits vertegenwoordigt. Base64 is een zesbitscodering. Dat betekent dat er  verschillende tekens zijn, vandaar de naam base64. Base64 is daardoor korter dan een hexadecimale codering, het heeft ongeveer 133% van de lengte van achtbitscodering, terwijl een hexadecimale codering twee keer zo lang is als de oorspronkelijke achtbitscodering.

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 (onder meer niet de eerste 33 ASCII-tekens, waaronder de spatie en de carriage return).

Omzetten 
Base64-codering kan worden toegepast op een willekeurige reeks bytes. Het algoritme voor de codering verwerkt de data in groepjes van drie bytes. Die bevatten 3 × 8 = 24 willekeurige bits. Die worden gehergroepeerd in vier bytes van 6 bits (4 × 6 is ook 24). Elke byte kan dan dus maar zes bits bevatten, de overige worden nul. Dat maakt 64 combinaties mogelijk. De 64 wordt vol gemaakt met het =-teken en de binaire nul. Daarmee kan ook een mouw worden gepast aan data worden omgezet naar leesbare tekens: hoofdletters, kleine letters en cijfers = 2 × 26 + 10 = 62 tekens, plus de slash en het plusteken. 

Wanneer het aantal te coderen bytes geen veelvoud is van drie, worden er, afhankelijk van het aantal benodigde extra bits, twee of vier nullen achter gezet. Als er twee nullen zijn toegevoegd, wordt "=" achter het eindresultaat gezet, bij vier nullen komt er "==" achter.

Een voorbeeld met de tekenreeks "π ∈ ℝ", gecodeerd als UTF-8:
11001111  10000000  00100000  11100010  10001000  10001000  00100000  11100010  10000100  10011101

groeperen in groepen van zes:

110011  111000  000000  100000  111000  101000  100010  001000  001000  001110  001010  000100  100111  01

aanvullen van de laatste groep met vier nullen, totdat deze ook uit zes bits bestaat:

110011  111000  000000  100000  111000  101000  100010  001000  001000  001110  001010  000100  100111  010000

omzetten naar decimaal:

51  56  0  32  56  40  34  8  8  14  10  4  39  16

betreffende teken kiezen uit de base64-tekenreeks:

z 4 A g 4 o i I I O K E n Q

eindresultaat:

z4Ag4oiIIOKEnQ== (twee "="-tekens zijn toegevoegd, om uit te komen op een viervoud).

Een computer zet de getallen niet eerst om in decimaal, omdat computers zelf met het binaire systeem werken.

Het aantal tekens (inclusief de toegevoegde "="-tekens) in het eindresultaat is altijd een viervoud. Dit valt als volgt te beredeneren. Elke groep van drie bytes (24 bits) leidt tot vier groepen van zes bits en dus vier base64-tekens. Een losse byte leidt na aanvulling met vier nullen tot twee base64-tekens waarna er twee =-tekens toegevoegd worden. In totaal dus vier tekens. Twee losse bytes leiden na aanvullen met twee nullen tot drie base64-tekens waarna er één "="-teken toegevoegd wordt. In totaal dus ook vier tekens.

Base58

Base58 is een variant van base64, waarbij zes tekens zijn weggelaten: 0OIl+/. De tekenreeks is dus:     
ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz123456789.

Base58Check heeft dezelfde tekens, maar met de cijfers voorop:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
waarbij de codering wat langer is door enkele controletekens uit dezelfde tekenset.

Deze laatste wordt onder meer gebruikt voor een bitcoinadres.

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.

Externe links
 Base64 online (de)coderen
 Base64 code beschrijving
 RFC 1421

Computerstandaard