Het is niet mogelijk bit-by-bit maar 3 bytes per keer, of veelvouden van 3 bytes op tijd zullen doen !.
Met andere woorden, als u uw invoerbestand opsplitst in "chunks" welke maat (en) een veelvoud is van 3 bytes, dan kunt u de chunks afzonderlijk coderen en de resulterende B64-gecodeerde stukken samenvoegen (in de overeenkomstige volgorde, van Houd er rekening mee dat de laatste chuink niet exact een veelvoud van 3 bytes hoeft te zijn, afhankelijk van de modulo 3-waarde van de grootte heeft de bijbehorende B64-waarde enkele van deze padding-tekens (meestal het gelijkteken) maar dat is goed , omdat dit het enige stuk is dat zo'n opvulling heeft (en nodig heeft).
In de decoderingsrichting is dit hetzelfde idee, behalve dat u de B64-gecodeerde gegevens in veelvouden van 4 bytes moet splitsen. Decodeer ze parallel/individueel naar wens en reproduceer de originele gegevens door de gedecodeerde delen bij elkaar te voegen (opnieuw in dezelfde volgorde).
Voorbeeld:
"File" contents =
"Never argue with the data." (Jimmy Neutron)
.
Straight encoding = Ik5ldmVyIGFyZ3VlIHdpdGggdGhlIGRhdGEuIiAoSmltbXkgTmV1dHJvbik=
Now, in chunks:
"Never argue
--> Ik5ldmVyIGFyZ3Vl
with the
--> IHdpdGggdGhl
data." (Jimmy Neutron)
--> IGRhdGEuIiAoSmltbXkgTmV1dHJvbik=
Als je het stuk in die volgorde ziet, zijn de 3 gecodeerde chunks hetzelfde als de code die voor het hele bestand is geproduceerd.
Het decoderen gebeurt op dezelfde manier, met willekeurige chuncked-grootte, op voorwaarde dat het een veelvoud van 4 bytes is. Het is absoluut niet nodig om enige vorm van overeenstemming te hebben tussen de formaten die worden gebruikt voor codering. (hoewel het standaardiseren van één enkele grootte voor elke richting (zeg 300 en 400) de zaken misschien uniformer en gemakkelijker te beheren maakt.