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