Эти функции обеспечивают преобразования между 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
(там сначала помещаются самые старшие разряды).