A64L(3)

ИМЯ
a64l, l64a - преобразование между типами long и base-64

ОБЗОР
#include <stdlib.h>

long a64l(const char *str64);

char *l64a(long value);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

a64l(), l64a():
    _XOPEN_SOURCE >= 500
        || /* начиная с glibc 2.19: */ _DEFAULT_SOURCE
        || /* версии glibc <= 2.19: */ _SVID_SOURCE

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

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
l64a() | Безвредность в нитях | MT-Unsafe race:l64a
a64l() | Безвредность в нитях | MT-Safe

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008.

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

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

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

Это не та кодировка, которая используется в uuencode(1).

СМОТРИТЕ ТАКЖЕ
uuencode(1), strtoul(3)