C语言实现16进制字符串转十进制整数函数
int conv(char hex[])
{
int len = strlen(hex);
if (hex[len - 1] != 'H' && hex[len - 1] != 'h') { // 判断是否以 H 或 h 结尾
return -1;
}
int ans = 0;
for (int i = 0; i < len - 1; i++) {
if (hex[i] >= '0' && hex[i] <= '9') { // 0~9 数字字符直接转换
ans = ans * 16 + hex[i] - '0';
} else if (hex[i] >= 'A' && hex[i] <= 'F') { // A~F 字符转换为 10~15
ans = ans * 16 + hex[i] - 'A' + 10;
} else if (hex[i] >= 'a' && hex[i] <= 'f') { // a~f 字符转换为 10~15
ans = ans * 16 + hex[i] - 'a' + 10;
} else { // 非法字符返回 -1
return -1;
}
}
return ans;
}
原文地址: https://www.cveoy.top/t/topic/nSed 著作权归作者所有。请勿转载和采集!