# a64l

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



           a64l, l64a — convert between a 32-bit integer and a radix-64 ASCII
           string
    


## SYNOPSIS



           #include <stdlib.h>
    
           long a64l(const char *_s_);
           char *l64a(long _value_);
    


## DESCRIPTION



           These functions maintain numbers stored in radix-64 ASCII
           characters. This is a notation by which 32-bit integers can be
           represented by up to six characters; each character represents a
           digit in radix-64 notation. If the type **long** contains more than 32
           bits, only the low-order 32 bits shall be used for these
           operations.
    
           The characters used to represent digits are **'.'**(dot) for 0, **'/'**
           for 1, **'0'** through **'9'** for [2,11], **'A'** through **'Z'** for [12,37],
           and **'a'** through **'z'** for [38,63].
    
           The _a64l_() function shall take a pointer to a radix-64
           representation, in which the first digit is the least significant,
           and return the corresponding **long** value. If the string pointed to
           by _s_ contains more than six characters, _a64l_() shall use the first
           six. If the first six characters of the string contain a null
           terminator, _a64l_() shall use only characters preceding the null
           terminator. The _a64l_() function shall scan the character string
           from left to right with the least significant digit on the left,
           decoding each character as a 6-bit radix-64 number. If the type
           **long** contains more than 32 bits, the resulting value is sign-
           extended. 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 shall take a **long** argument and return a
           pointer to the corresponding radix-64 representation. The behavior
           of _l64a_() is unspecified if _value_ is negative.
    
           The value returned by _l64a_() may be a pointer into a static
           buffer. Subsequent calls to _l64a_() may overwrite the buffer.
    
           The _l64a_() function need not be thread-safe.
    


## RETURN VALUE



           Upon successful completion, _a64l_() shall return the **long** value
           resulting from conversion of the input string. If a string pointed
           to by _s_ is an empty string, _a64l_() shall return 0L.
    
           The _l64a_() function shall return a pointer to the radix-64
           representation. If _value_ is 0L, _l64a_() shall return a pointer to
           an empty string.
    


## ERRORS



           No errors are defined.
    
           _The following sections are informative._
    


## EXAMPLES



           None.
    


## APPLICATION USAGE



           If the type **long** contains more than 32 bits, the result of
           _a64l_(_l64a_(_x_)) is _x_ in the low-order 32 bits.
    


## RATIONALE



           This is not the same encoding as used by either encoding variant
           of the _uuencode_ utility.
    


## FUTURE DIRECTIONS



           None.
    


* * *