#include <stdlib.h> | |
#include <string.h> | |
#include <stdint.h> | |
static const char digits[] = | |
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; | |
long a64l(const char *s) | |
{ | |
int e; | |
uint32_t x = 0; | |
for (e=0; e<36 && *s; e+=6, s++) | |
x |= (strchr(digits, *s)-digits)<<e; | |
return x; | |
} | |
char *l64a(long x0) | |
{ | |
static char s[7]; | |
char *p; | |
uint32_t x = x0; | |
for (p=s; x; p++, x>>=6) | |
*p = digits[x&63]; | |
*p = 0; | |
return s; | |
} |