Usage#

See also Base64 library

Quickstart#

Add use base64; to your library and module definitions.

This library exports two functions:

Both functions accept a <byte-string> and return a <byte-string>.

Types of encoding#

The functions have two types of encoding/decoding:

  • #"standard" (default) and

  • #"http"

The main difference between them is the padding characters used. You can choose the type with the encoding: parameter (see example below).

Example#

Standard encoding/decoding#

Here is an example of usage of the standard encoding/decoding:

// Example string to encode
let original-string = "Many hands make light work.";

// Encoding the string to base64 standard
let encoded-standard = base64-encode(original-string);
format-out("Encoded string: %=\n", encoded-standard);

// Shows in output
// Encoded string: "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcmsu"

// Decoding the string in base64 standard
let decoded-string = base64-decode(encoded-standard);
format-out("Decoded string: %=\n", decoded-string);

// Shows in output
// Decoded string: "Many hands make light work."

HTTP encoding/decoding#

To show the HTTP encoding/decoding we will use a text that forces the padding (base64 encoding uses padding to ensure that the length of the encoded string is a multiple of 4 bytes).

// Example string to encode, note the missing dot at the end
let original-string = "Many hands make light work";

// Encoding the string to base64 http
let encoded-http = base64-encode(original-string, encoding: #"http");
format-out("Encoded string: %=\n", encoded-http);

// Shows in output (note the padding character '@')
// Encoded string: "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcms@"

// Decoding the string in base64 http
let decoded-string = base64-decode(encoded-http, encoding: #"http");
format-out("Decoded string: %=\n", decoded-string);

// Shows in output
// Decoded string: "Many hands make light work"