0

Gedecodeerd

Ascii85

Gecodeerd

Ascii85
Variant

Over Ascii85

Ascii85 is een coderingsmethode die gebruikmaakt van 7-bit ASCII-tekens. Het wordt ook wel Base85 genoemd.

In Ascii85 worden gegevens in groepen van 4 bytes verdeeld en weergegeven door ze om te zetten in 5 ASCII-tekens.

Er bestaan verschillende varianten van Ascii85. DenCode ondersteunt de volgende drie typen Ascii85. Het origineel is btoa, gevolgd door Adobe en Z85.

Beschrijving
Z85Gebruikt in ZeroMQ. Vermijdt tekens die geëscaped moeten worden zoals "\" (backslash) en "'" (apostrof).
AdobeGebruikt voor het coderen van afbeeldingen, etc. in Adobe PostScript en PDF (Portable Document Format) bestanden. Omsloten door "<~" en "~>".
btoaFormaat van het UNIX btoa-commando. Werd in het verleden gebruikt voor het uitwisselen van binaire gegevens, maar is nu niet meer gebruikelijk. Omsloten door "xbtoa Begin" en "xbtoa End" regels.

De ASCII-tekens die in Ascii85 worden gebruikt, zijn als volgt. 4-byte waarden worden behandeld als big-endian unsigned integers, berekend als cijfers in het 85-tallig stelsel (5 cijfers), en het Ascii85-conversieresultaat wordt verkregen op basis van de volgende ASCII-tekens.

ASCII-teken
Z850123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#
Adobe!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
btoa!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
(Oorspronkelijk waren het de tekens van " " (spatie) tot "t", maar omdat sommige mailprogramma's spaties aan het einde verwijderden, werden ze later vervangen door tekens van "!" tot "u" exclusief spaties.)

Bijvoorbeeld, het resultaat van het converteren van "Hello" met Ascii85 is als volgt:

1. Verdeel in groepen van 4 bytes. Als de laatste groep minder dan 4 bytes is, vul dan aan met "00".

48656C6C(16) 6F000000(16)  (Hell o)

2. Behandel elke 4 bytes als een big-endian unsigned integer en converteer de waarde naar cijfers in het 85-tallig stelsel.

48656C6C(16)
= 1214606444(10)
= 23 * 854 + 22 * 853 + 66 * 852 + 52 * 85 + 49
6F000000(16)
= 1862270976(10)
= 35 * 854 + 57 * 853 + 33 * 852 + 65 * 85 + 26

3. Converteer elk cijfer van het 85-tallig stelsel naar een ASCII-teken. Als er is aangevuld met "00", wordt het opvulgedeelte verwijderd (in het geval van Adobe/Z85).

23226652493557336526
Z85nm=QNzV
Adobe87cURDZ
btoa87cURDZBb;

4. Verbind alle tekens om het resultaat van de Ascii85-conversie te vormen. Adobe wordt omsloten door "<~" & "~>" en breekt af na elke 80 tekens. btoa wordt omsloten door "xbtoa Begin" & "xbtoa End" (inclusief gegevenslengte en controlesom) en breekt af na elke 78 tekens.

Resultaat
Z85nm=QNzV
Adobe<~87cURDZ~>
btoaxbtoa Begin
87cURDZBb;
xbtoa End N 5 5 E 42 S 1f9 R a9f

Daarnaast zijn er enkele afkortingen gedefinieerd.

Afkorting
Z85Geen
Adobe00000000(16) -> z
btoa00000000(16) -> z
20202020(16) -> y (btoa v4.2 en later)