ZstrHexDigitValue
Description
Convert a hex / decimal digit character to its numeric value. Accepts 0..9, a..f, A..F (case-insensitive for hex).
Success
Returns the digit value 0..15.
Failure
Returns -1 when c is not a valid hex / decimal digit.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Io.c:1275:
}
i32 ZstrHexDigitValue(char c) {
if (c >= '0' && c <= '9') {
return c - '0';- In
Io.c:1291:
#if FEATURE_INT
static bool int_fmt_digit_matches_radix(char c, u8 radix) {
i32 digit = ZstrHexDigitValue(c);
return digit >= 0 && digit < radix;- In
Read.c:1448:
// (10 + (c-'a') -> 10 - (c-'a')): 'b' real=11 mutant=9, 'f' real=15 mutant=5.
static bool test_m31_hexdigit_lowercase(void) {
return ZstrHexDigitValue('a') == 10 && ZstrHexDigitValue('b') == 11 && ZstrHexDigitValue('f') == 15;
}- In
Read.c:1456:
// Also kills 1249:24 sub_to_add ((c-'A') -> (c+'A')): 'A' would give 140.
static bool test_m31_hexdigit_upper_A(void) {
return ZstrHexDigitValue('A') == 10;
}- In
Read.c:1463:
// (10 + (c-'A') -> 10 - (c-'A')): 'F' real=15 mutant=5.
static bool test_m31_hexdigit_upper_F(void) {
return ZstrHexDigitValue('F') == 15;
}- In
Read.c:1468:
// Sanity: digits and an invalid char, to keep the contract honest.
static bool test_m31_hexdigit_misc(void) {
return ZstrHexDigitValue('0') == 0 && ZstrHexDigitValue('9') == 9 && ZstrHexDigitValue('g') == -1 &&
ZstrHexDigitValue('@') == -1;
}- In
Read.c:1469:
static bool test_m31_hexdigit_misc(void) {
return ZstrHexDigitValue('0') == 0 && ZstrHexDigitValue('9') == 9 && ZstrHexDigitValue('g') == -1 &&
ZstrHexDigitValue('@') == -1;
}
Last updated on