// Common/StringToInt.cpp #include "StdAfx.h" #include "StringToInt.h" UInt64 ConvertStringToUInt64(const char *s, const char **end) { UInt64 result = 0; for (;;) { char c = *s; if (c < '0' || c > '9') { if (end != NULL) *end = s; return result; } result *= 10; result += (c - '0'); s++; } } UInt64 ConvertOctStringToUInt64(const char *s, const char **end) { UInt64 result = 0; for (;;) { char c = *s; if (c < '0' || c > '7') { if (end != NULL) *end = s; return result; } result <<= 3; result += (c - '0'); s++; } } UInt64 ConvertHexStringToUInt64(const char *s, const char **end) { UInt64 result = 0; for (;;) { char c = *s; UInt32 v; if (c >= '0' && c <= '9') v = (c - '0'); else if (c >= 'A' && c <= 'F') v = 10 + (c - 'A'); else if (c >= 'a' && c <= 'f') v = 10 + (c - 'a'); else { if (end != NULL) *end = s; return result; } result <<= 4; result |= v; s++; } } UInt64 ConvertStringToUInt64(const wchar_t *s, const wchar_t **end) { UInt64 result = 0; for (;;) { wchar_t c = *s; if (c < '0' || c > '9') { if (end != NULL) *end = s; return result; } result *= 10; result += (c - '0'); s++; } } Int64 ConvertStringToInt64(const char *s, const char **end) { if (*s == '-') return -(Int64)ConvertStringToUInt64(s + 1, end); return ConvertStringToUInt64(s, end); }