C语言函数实现16进制字符串转十进制整数
C语言函数实现16进制字符串转十进制整数
本文提供一个C语言函数conv(char hex[]), 用于将16进制数字字符串转换为十进制整数。该函数要求输入的16进制数字字符串位数在6位以下,1位以上,并以H或h结尾。
int conv(char hex[]) {
int num = 0;
int i = 0;
while (hex[i] != '\0') { // 遍历字符串
if (i == 6 || (hex[i] == 'H' && hex[i+1] == '\0') ) { // 位数超过6位或者H不是最后一位
return -1; // 输入有误,返回-1
}
int n;
if (hex[i] >= '0' && hex[i] <= '9') { // 0~9
n = hex[i] - '0';
} else if (hex[i] >= 'A' && hex[i] <= 'F') { // A~F
n = hex[i] - 'A' + 10;
} else if (hex[i] >= 'a' && hex[i] <= 'f') { // a~f
n = hex[i] - 'a' + 10;
} else {
return -1; // 输入有误,返回-1
}
num = num * 16 + n; // 转换为十进制整数
i++;
}
return num;
}
函数说明:
- 该函数接收一个字符数组
hex作为参数,该数组存储了16进制数字字符串。 - 函数首先判断输入字符串的位数是否符合要求,如果超过6位或H不是最后一位则返回-1,表示输入有误。
- 然后遍历字符串,逐个字符判断其是否为有效的16进制字符,并将字符转换为相应的十进制数字。
- 转换过程中,将每个数字乘以16的幂,并累加到
num中,最终得到十进制整数。 - 函数返回最终计算得到的十进制整数。
示例:
输入:
57ABH
输出:
22443
原文地址: https://www.cveoy.top/t/topic/nSej 著作权归作者所有。请勿转载和采集!