1*c9945492SAndroid Build Coastguard Worker #include <stdlib.h> 2*c9945492SAndroid Build Coastguard Worker #include <string.h> 3*c9945492SAndroid Build Coastguard Worker #include <stdint.h> 4*c9945492SAndroid Build Coastguard Worker 5*c9945492SAndroid Build Coastguard Worker static const char digits[] = 6*c9945492SAndroid Build Coastguard Worker "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 7*c9945492SAndroid Build Coastguard Worker a64l(const char * s)8*c9945492SAndroid Build Coastguard Workerlong a64l(const char *s) 9*c9945492SAndroid Build Coastguard Worker { 10*c9945492SAndroid Build Coastguard Worker int e; 11*c9945492SAndroid Build Coastguard Worker uint32_t x = 0; 12*c9945492SAndroid Build Coastguard Worker for (e=0; e<36 && *s; e+=6, s++) { 13*c9945492SAndroid Build Coastguard Worker const char *d = strchr(digits, *s); 14*c9945492SAndroid Build Coastguard Worker if (!d) break; 15*c9945492SAndroid Build Coastguard Worker x |= (uint32_t)(d-digits)<<e; 16*c9945492SAndroid Build Coastguard Worker } 17*c9945492SAndroid Build Coastguard Worker return (int32_t)x; 18*c9945492SAndroid Build Coastguard Worker } 19*c9945492SAndroid Build Coastguard Worker l64a(long x0)20*c9945492SAndroid Build Coastguard Workerchar *l64a(long x0) 21*c9945492SAndroid Build Coastguard Worker { 22*c9945492SAndroid Build Coastguard Worker static char s[7]; 23*c9945492SAndroid Build Coastguard Worker char *p; 24*c9945492SAndroid Build Coastguard Worker uint32_t x = x0; 25*c9945492SAndroid Build Coastguard Worker for (p=s; x; p++, x>>=6) 26*c9945492SAndroid Build Coastguard Worker *p = digits[x&63]; 27*c9945492SAndroid Build Coastguard Worker *p = 0; 28*c9945492SAndroid Build Coastguard Worker return s; 29*c9945492SAndroid Build Coastguard Worker } 30