10 #define crt_tolower(c) ((((c) >= 'A') && ((c) <= 'Z')) ? ((c) - 'A' + 'a') : (c)) 11 #define crt_toupper(c) ((((c) >= 'a') && ((c) <= 'z')) ? ((c) - 'a' + 'A') : (c)) 25 #define isalpha(c) (((((c) >= 'A') && ((c) <= 'Z')) || (((c) >= 'a') && ((c) <= 'z'))) ? 1 : 0) 27 #define isdigit(c) ((((c) >= '0') && ((c) <= '9')) ? 1 : 0) 29 #define isxdigit(c) (((((c) >= 'A') && ((c) <= 'F')) || (((c) >= 'a') && \ 30 ((c) <= 'f')) || (((c) >= '0') && ((c) <= '9'))) ? 1 : 0) 32 #define isprint(c) (((c) >= ' ' && (c) <= '~') ? 1 : 0) 33 #define isspace(c) (((c) == ' ') || ((c) == '\t') || ((c) == '\n') || ((c) == '\v') || ((c) == '\f') || ((c) == '\r')) 46 bool neg =
false, hex =
false;
58 else if (Ptr[i] ==
'+')
63 if (Ptr[i] ==
'0' && (Ptr[i + 1] ==
'x' || Ptr[i + 1] ==
'X'))
70 if (Ptr[i] >=
'0' && Ptr[i] <=
'9')
72 result = result * (hex ? 16 : 10) + Ptr[i] -
'0';
74 else if (hex && Ptr[i] >=
'A' && Ptr[i] <=
'F')
76 result = result * 16 + Ptr[i] -
'A' + 10;
78 else if (hex && Ptr[i] >=
'a' && Ptr[i] <=
'f')
80 result = result * 16 + Ptr[i] -
'a' + 10;
93 if (neg && result != 0)
INT32 __cdecl strtol(const INT8 *nptr, INT8 **endptr, INT32 ibase)
static UINT64 quick_convert(const char *Ptr, const char **EndPtr)
INT64 __cdecl strtoll(const INT8 *nptr, INT8 **endptr, INT32 ibase)
unsigned long long UINT64
UINT64 __cdecl strtoull(const INT8 *nptr, INT8 **endptr, INT32 ibase)
UINT32 __cdecl strtoul(const INT8 *nptr, INT8 **endptr, INT32 ibase)