base32
The base32 library provides predicates for encoding and decoding
data in the Base32 format as per the specification found at:
https://www.rfc-editor.org/rfc/rfc4648
API documentation
Open the ../../apis/library_index.html#base32 link in a web browser.
Loading
To load all entities in this library, load the loader.lgt utility
file:
| ?- logtalk_load(base32(loader)).
Testing
To test this library predicates, load the tester.lgt file:
| ?- logtalk_load(base32(tester)).
Encoding
Encoding a list of bytes in Base32 format is accomplished by the
base32::generate/2 predicate. For example:
| ?- atom_codes('Hello!', Bytes),
base32::generate(atom(Base32), Bytes).
Base32 = 'JBSWY3DPEE======'
Bytes = [72,101,108,108,111,33]
yes
| ?- atom_codes('Hello!', Bytes),
base32::generate(codes(Base32), Bytes).
Base32 = [74,66,83,87,89,51,68,80,69,69,61,61,61,61,61,61]
Bytes = [72,101,108,108,111,33]
yes
The Base32 result can also be represented using a list of chars, written to a file or to a stream. See the API documentation for details.
Decoding
Decoding of Base32 data is accomplished using the base32::parse/2
predicate. For example:
| ?- base32::parse(atom('JBSWY3DPEE======'), Bytes),
atom_codes(Atom, Bytes).
Atom = 'Hello!'
Bytes = [72,101,108,108,111,33]
yes
| ?- base32::parse(chars(['J','B','S','W','Y','3','D','P','E','E','=','=','=','=','=','=']), Bytes),
atom_codes(Atom, Bytes).
Atom = 'Hello!'
Bytes = [72,101,108,108,111,33]
yes
The base32::parse/2 predicate accepts other input sources such as a
file or a stream. See the API documentation for details. Both uppercase
and lowercase letters are accepted when decoding.