#include <stdint.h> | |
#include <stdlib.h> | |
#include <string.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; | |
} |