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
C语言函数实现16进制字符串转十进制整数

原文地址: https://www.cveoy.top/t/topic/nSej 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录