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
Open the `../../docs/library_index.html#base64 <../../docs/library_index.html#base64>`__ link in a web browser.
To load all entities in this library, load the loader.lgt
utility
file:
::
| ?- logtalk_load(base64(loader))
.
To test this library predicates, load the tester.lgt
file:
::
| ?- logtalk_load(base64(tester))
.
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 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.