base85

The base85 library provides predicates for encoding and decoding data in the Base85 (Ascii85) format. Ascii85 is used in PostScript and PDF files. The encoding uses printable ASCII characters from ! (33) to u (117). A special shortcut z represents four zero bytes. For more details, see for example:

https://en.wikipedia.org/wiki/Ascii85

API documentation

Open the ../../apis/library_index.html#base85 link in a web browser.

Loading

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

| ?- logtalk_load(base85(loader)).

Testing

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

| ?- logtalk_load(base85(tester)).

Encoding

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

| ?- atom_codes('Man ', Bytes),
     base85::generate(atom(Base85), Bytes).
Base85 = '9jqo^'
Bytes = [77,97,110,32]
yes

Four zero bytes are encoded as the special character z:

| ?- base85::generate(atom(Base85), [0, 0, 0, 0]).
Base85 = 'z'
yes

Decoding

Decoding of Base85 data is accomplished using the base85::parse/2 predicate. For example:

| ?- base85::parse(atom('9jqo^'), Bytes),
     atom_codes(Atom, Bytes).
Atom = 'Man '
Bytes = [77,97,110,32]
yes

The parser also accepts input with optional <~ and ~> delimiters:

| ?- base85::parse(atom('<~9jqo^~>'), Bytes),
     atom_codes(Atom, Bytes).
Atom = 'Man '
Bytes = [77,97,110,32]
yes