Stefan Schuermans commited on 2019-06-09 20:32:19
Showing 2 changed files, with 37 additions and 0 deletions.
| ... | ... |
@@ -111,6 +111,35 @@ bool StringParser::uintMin(unsigned int min, unsigned int &uint) |
| 111 | 111 |
return uintNo(uint) && uint >= min; |
| 112 | 112 |
} |
| 113 | 113 |
|
| 114 |
+/** |
|
| 115 |
+ * @brief parse hexadecimal number |
|
| 116 |
+ * @param[in] digits number of digits to parse |
|
| 117 |
+ * @param[out] uint number parsed from string |
|
| 118 |
+ * @return if parsing was successful |
|
| 119 |
+ */ |
|
| 120 |
+bool StringParser::uintHex(unsigned int digits, unsigned int &uint) |
|
| 121 |
+{
|
|
| 122 |
+ uint = 0; |
|
| 123 |
+ for (; digits > 0; --digits) {
|
|
| 124 |
+ if (m_it == m_str.end()) {
|
|
| 125 |
+ return false; |
|
| 126 |
+ } |
|
| 127 |
+ char chr = *m_it; |
|
| 128 |
+ ++m_it; |
|
| 129 |
+ uint <<= 4; |
|
| 130 |
+ if (chr >= '0' && chr <= '9') {
|
|
| 131 |
+ uint |= chr - '0'; |
|
| 132 |
+ } else if (chr >= 'A' && chr <= 'F') {
|
|
| 133 |
+ uint |= chr - 'A' + 10; |
|
| 134 |
+ } else if (chr >= 'a' && chr <= 'f') {
|
|
| 135 |
+ uint |= chr - 'a' + 10; |
|
| 136 |
+ } else {
|
|
| 137 |
+ return false; |
|
| 138 |
+ } |
|
| 139 |
+ } |
|
| 140 |
+ return true; |
|
| 141 |
+} |
|
| 142 |
+ |
|
| 114 | 143 |
/** |
| 115 | 144 |
* @brief parse signed number |
| 116 | 145 |
* @param[out] sint number parsed from string |
| ... | ... |
@@ -58,6 +58,14 @@ public: |
| 58 | 58 |
*/ |
| 59 | 59 |
bool uintMin(unsigned int min, unsigned int &uint); |
| 60 | 60 |
|
| 61 |
+ /** |
|
| 62 |
+ * @brief parse hexadecimal number |
|
| 63 |
+ * @param[in] digits number of digits to parse |
|
| 64 |
+ * @param[out] uint number parsed from string |
|
| 65 |
+ * @return if parsing was successful |
|
| 66 |
+ */ |
|
| 67 |
+ bool uintHex(unsigned int digits, unsigned int &uint); |
|
| 68 |
+ |
|
| 61 | 69 |
/** |
| 62 | 70 |
* @brief parse signed number |
| 63 | 71 |
* @param[out] sint number parsed from string |
| 64 | 72 |