mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:47:36 +00:00
AK: StringUtils, add "convert_to_uint_from_hex" method
New method to convert hex string unsigned integer.
This commit is contained in:
parent
9300a8cfe5
commit
738235574f
2 changed files with 33 additions and 1 deletions
|
@ -143,6 +143,38 @@ unsigned convert_to_uint(const StringView& str, bool& ok)
|
|||
return value;
|
||||
}
|
||||
|
||||
unsigned convert_to_uint_from_hex(const StringView& str, bool& ok)
|
||||
{
|
||||
if (str.is_empty()) {
|
||||
ok = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned value = 0;
|
||||
const auto count = str.length();
|
||||
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
char digit = str[i];
|
||||
u8 digit_val;
|
||||
|
||||
if (digit >= '0' && digit <= '9') {
|
||||
digit_val = digit - '0';
|
||||
} else if (digit >= 'a' && digit <= 'f') {
|
||||
digit_val = 10 + (digit - 'a');
|
||||
} else if (digit >= 'A' && digit <= 'F') {
|
||||
digit_val = 10 + (digit - 'A');
|
||||
} else {
|
||||
ok = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
value = (value << 4) + digit_val;
|
||||
}
|
||||
|
||||
ok = true;
|
||||
return value;
|
||||
}
|
||||
|
||||
static inline char to_lowercase(char c)
|
||||
{
|
||||
if (c >= 'A' && c <= 'Z')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue