#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; }