逐字符解析:
'0'~'9' → c - '0''A'~'F' → c - 'A' + 10'a'~'f' → c - 'a' + 10累加:result = result * 16 + digit。
int hexStrToInt(const char *s) {
int val = 0;
while (*s) {
char c = *s++;
int digit;
if (c >= '0' && c <= '9') digit = c - '0';
else if (c >= 'A' && c <= 'F') digit = c - 'A' + 10;
else if (c >= 'a' && c <= 'f') digit = c - 'a' + 10;
else break; // 非法字符停止
val = val * 16 + digit;
}
return val;
}
// 調用:hexStrToInt("2A") 返回 42 (0x2A)
strtol("2A", NULL, 16)(C 標準庫,支持前綴 0x、錯誤檢查)。sscanf(str, "%x", &val)。推薦直接用 strtol,健壯且標準。