These functions are used to maintain numbers stored in radix64
ASCII
characters.
This is a notation by which 32bit integers can be represented by
up to six characters; each character represents a digit in
radix64 notation.
If the type long contains more than 32 bits, only the loworder
32 bits are used for these operations.
The characters used to represent
"digits"
are
‘.’
for 0,
‘/’
for 1,
‘0’

‘9’
for 2  11,
‘A’

‘Z’
for 12  37, and
‘a’

‘z’
for 38  63.
The
a64l
function takes a pointer to a radix64 representation, in which the first
digit is the least significant, and returns a corresponding
.Vt long
value.
If the string pointed to by
s
contains more than six characters,
a64l
uses the first six.
If the first six characters of the string contain a null terminator,
a64l
uses only characters preceding the null terminator.
The
a64l
function scans the character string from left to right with the least
significant digit on the left, decoding each character as a 6bit
radix64 number.
If the type long contains more than 32 bits, the resulting value is
signextended.
The behavior of
a64l
is unspecified if
s
is a null pointer or the string pointed to by
s
was not generated by a previous call to
l64a.
The
l64a
function takes a
.Vt long
argument and returns a pointer to the corresponding
radix64 representation.
The behavior of
l64a
is unspecified if value is negative.
The value returned by
l64a
is a pointer into a static buffer.
Subsequent calls to
l64a
may overwrite the buffer.
The
l64a_r
function performs a conversion identical to that of
l64a
and stores the resulting representation in the memory area pointed to by
buffer,
consuming at most
buflen
characters including the terminating
NUL
character.