| OLD | NEW |
| (Empty) |
| 1 // Common/StringToInt.cpp | |
| 2 | |
| 3 #include "StdAfx.h" | |
| 4 | |
| 5 #include "StringToInt.h" | |
| 6 | |
| 7 UInt64 ConvertStringToUInt64(const char *s, const char **end) | |
| 8 { | |
| 9 UInt64 result = 0; | |
| 10 for (;;) | |
| 11 { | |
| 12 char c = *s; | |
| 13 if (c < '0' || c > '9') | |
| 14 { | |
| 15 if (end != NULL) | |
| 16 *end = s; | |
| 17 return result; | |
| 18 } | |
| 19 result *= 10; | |
| 20 result += (c - '0'); | |
| 21 s++; | |
| 22 } | |
| 23 } | |
| 24 | |
| 25 UInt64 ConvertOctStringToUInt64(const char *s, const char **end) | |
| 26 { | |
| 27 UInt64 result = 0; | |
| 28 for (;;) | |
| 29 { | |
| 30 char c = *s; | |
| 31 if (c < '0' || c > '7') | |
| 32 { | |
| 33 if (end != NULL) | |
| 34 *end = s; | |
| 35 return result; | |
| 36 } | |
| 37 result <<= 3; | |
| 38 result += (c - '0'); | |
| 39 s++; | |
| 40 } | |
| 41 } | |
| 42 | |
| 43 UInt64 ConvertHexStringToUInt64(const char *s, const char **end) | |
| 44 { | |
| 45 UInt64 result = 0; | |
| 46 for (;;) | |
| 47 { | |
| 48 char c = *s; | |
| 49 UInt32 v; | |
| 50 if (c >= '0' && c <= '9') v = (c - '0'); | |
| 51 else if (c >= 'A' && c <= 'F') v = 10 + (c - 'A'); | |
| 52 else if (c >= 'a' && c <= 'f') v = 10 + (c - 'a'); | |
| 53 else | |
| 54 { | |
| 55 if (end != NULL) | |
| 56 *end = s; | |
| 57 return result; | |
| 58 } | |
| 59 result <<= 4; | |
| 60 result |= v; | |
| 61 s++; | |
| 62 } | |
| 63 } | |
| 64 | |
| 65 | |
| 66 UInt64 ConvertStringToUInt64(const wchar_t *s, const wchar_t **end) | |
| 67 { | |
| 68 UInt64 result = 0; | |
| 69 for (;;) | |
| 70 { | |
| 71 wchar_t c = *s; | |
| 72 if (c < '0' || c > '9') | |
| 73 { | |
| 74 if (end != NULL) | |
| 75 *end = s; | |
| 76 return result; | |
| 77 } | |
| 78 result *= 10; | |
| 79 result += (c - '0'); | |
| 80 s++; | |
| 81 } | |
| 82 } | |
| 83 | |
| 84 | |
| 85 Int64 ConvertStringToInt64(const char *s, const char **end) | |
| 86 { | |
| 87 if (*s == '-') | |
| 88 return -(Int64)ConvertStringToUInt64(s + 1, end); | |
| 89 return ConvertStringToUInt64(s, end); | |
| 90 } | |
| OLD | NEW |