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