A64L(3)

НАЗВАНИЕ
a64l, l64a - преобразование между типами long и base-64

СИНТАКСИС
#include <stdlib.h>

long a64l(char *str64);

char *l64a(long value);

ОПИСАНИЕ
Эти функции обеспечивают преобразования между 32-битными типами long integer и строками little-endian base-64 ASCII (длиной от 0 до 6). Если строка, используемая как аргумент для a64l(), имеет длину более шести, то будут использоваться только первые 6 байтов. Если в длинном числе более 32 битов, то l64a() использует только младшие 32 бита у value, а a64l() расширяет на знак его 32-битный результат.

64 разряда в системе base-64:
    '.'	представляет 0
    '/'	представляет 1
    0-9	представляет 2-11
    A-Z	представляет 12-37
    a-z	представляет 38-63
Так что значение 123 равно 59*64^0 + 1*64^1 = "v/".

ЗАМЕЧАНИЯ
Значение, возвращаемое от a64l() может быть указателем на статический буфер, возможно перезаписываемый последующими вызовами.

Поведение l64a() неопределено, если value отрицательно. Если value равно нулю, то возвращается пустая строка.

Эти функции некорректны в glibc до версии 2.2.5 (там сначала помещаются самые старшие разряды).

СООТВЕТСТВИЕ СТАНДАРТАМ
XPG 4.2, POSIX 1003.1-2001.

СМ. ТАКЖЕ
uuencode(1), itoa(3), strtoul(3)