diff --git a/src/helpers/TxtDataHelpers.cpp b/src/helpers/TxtDataHelpers.cpp index 224eb873..09e86c67 100644 --- a/src/helpers/TxtDataHelpers.cpp +++ b/src/helpers/TxtDataHelpers.cpp @@ -139,3 +139,23 @@ const char* StrHelper::ftoa(float f) { } return tmp; } + +uint32_t StrHelper::fromHex(const char* src) { + uint32_t n = 0; + while (*src) { + if (*src >= '0' && *src <= '9') { + n <<= 4; + n |= (*src - '0'); + } else if (*src >= 'A' && *src <= 'F') { + n <<= 4; + n |= (*src - 'A' + 10); + } else if (*src >= 'a' && *src <= 'f') { + n <<= 4; + n |= (*src - 'a' + 10); + } else { + break; // non-hex char encountered, stop parsing + } + src++; + } + return n; +} diff --git a/src/helpers/TxtDataHelpers.h b/src/helpers/TxtDataHelpers.h index 89789990..387e09b9 100644 --- a/src/helpers/TxtDataHelpers.h +++ b/src/helpers/TxtDataHelpers.h @@ -13,4 +13,5 @@ public: static void strzcpy(char* dest, const char* src, size_t buf_sz); // pads with trailing nulls static const char* ftoa(float f); static bool isBlank(const char* str); + static uint32_t fromHex(const char* src); };