0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include "stdlib.h"
0011
0012
0013 unsigned long long int strtoull(const char *ptr, char **end, int base)
0014 {
0015 unsigned long long ret = 0;
0016
0017 if (base > 36)
0018 goto out;
0019
0020 while (*ptr) {
0021 int digit;
0022
0023 if (*ptr >= '0' && *ptr <= '9' && *ptr < '0' + base)
0024 digit = *ptr - '0';
0025 else if (*ptr >= 'A' && *ptr < 'A' + base - 10)
0026 digit = *ptr - 'A' + 10;
0027 else if (*ptr >= 'a' && *ptr < 'a' + base - 10)
0028 digit = *ptr - 'a' + 10;
0029 else
0030 break;
0031
0032 ret *= base;
0033 ret += digit;
0034 ptr++;
0035 }
0036
0037 out:
0038 if (end)
0039 *end = (char *)ptr;
0040
0041 return ret;
0042 }