Did you know ... Search Documentation:
Pack logtalk -- logtalk-3.85.0/manuals/_sources/libraries/base64.rst.txt

.. _library_base64:

base64

The base64 library provides predicates for parsing and generating data in the Base64 and Base64URL formats as per the specification found at:

https://www.rfc-editor.org/rfc/rfc4648

API documentation

Open the `../../docs/library_index.html#base64 <../../docs/library_index.html#base64>`__ link in a web browser.

Loading

To load all entities in this library, load the loader.lgt utility file:

::

| ?- logtalk_load(base64(loader)).

Testing

To test this library predicates, load the tester.lgt file:

::

| ?- logtalk_load(base64(tester)).

Encoding

Encoding a list of bytes in Base64 format is accomplished by the base64::generate/2 predicate. For example:

::

| ?- atom_codes('Hello world!', Bytes), base64::generate(atom(Base64), Bytes). Base64 = 'SGVsbG8gd29ybGQh' Bytes = [72,101,108,108,111,32,119,111,114,108,100,33] yes

| ?- atom_codes('Hello world!', Bytes), base64::generate(codes(Base64), Bytes). Base64 = [83,71,86,115,98,71,56,103,100,50,57,121,98,71,81,104] Bytes = [72,101,108,108,111,32,119,111,114,108,100,33] yes

The Base64 result can also be represented using a list of chars, written to a file or to a stream. See the API documentation for details.

For safe encoding of URLs, use instead the Base64URL format. For example:

::

| ?- base64url::generate(atom(Base64URL), 'https://logtalk.org'). Base64URL == 'aHR0cHM6Ly9sb2d0YWxrLm9yZw' yes

The Base64URL can also be represented using a list of chars or a list of codes. The input URL should be in the same format.

Decoding

Decoding of Base64 data is accomplished using the base64::parse/2 predicate. For example:

::

| ?- base64::parse(atom('SGVsbG8gd29ybGQh'), Bytes), atom_codes(Atom, Bytes). Atom = 'Hello world!' Bytes = [72,101,108,108,111,32,119,111,114,108,100,33] yes

| ?- base64::parse(chars(['S','G','V',s,b,'G','8',g,d,'2','9',y,b,'G','Q',h]), Bytes), atom_codes(Atom, Bytes). Atom = 'Hello world!' Bytes = [72,101,108,108,111,32,119,111,114,108,100,33] yes

The base64::parse/2 predicate accepts other input source such as a file or a stream. See the API documentation for details.

For decoding of URLs in the Base64URL format, use the base64url::parse/2 predicate. For example:

::

| ?- base64url::parse(atom('aHR0cHM6Ly9sb2d0YWxrLm9yZw'), URL). URL == 'https://logtalk.org' yes

The base64url::parse/2 predicate also accepts a list of chars or a list of codes as input. See the API documentation for details.