C语言函数实现16进制字符串转十进制整数

本示例提供一个 C 语言函数 conv(),用于将 1 到 6 位的 16 进制字符串(以 'H' 或 'h' 结尾)转换为十进制整数。函数使用循环遍历字符串,根据字符类型进行进制转换,并返回结果。

int conv(char hex[]) {
    int num = 0;
    int i = 0;
    while (hex[i] != 'H' && hex[i] != 'h') { // 遍历16进制字符串
        if (hex[i] >= '0' && hex[i] <= '9') { // 数字字符
            num = num * 16 + hex[i] - '0';
        } else if (hex[i] >= 'A' && hex[i] <= 'F') { // 大写字母字符
            num = num * 16 + hex[i] - 'A' + 10;
        } else if (hex[i] >= 'a' && hex[i] <= 'f') { // 小写字母字符
            num = num * 16 + hex[i] - 'a' + 10;
        } else { // 非法字符
            return -1;
        }
        i++;
    }
    return num;
}

函数说明:

  • conv(char hex[]):函数接收一个字符数组 hex 作为参数,表示要转换的 16 进制字符串。
  • 函数首先初始化两个变量:num 用于存储转换后的十进制整数,i 用于循环遍历字符数组。
  • 使用 while 循环遍历字符数组,直到遇到 'H' 或 'h' 结束。
  • 在循环中,根据字符类型进行转换:
    • 如果字符是数字字符('0' 到 '9'),则将字符转换为数字并加到 num 中。
    • 如果字符是大写字母字符('A' 到 'F'),则将字符转换为对应数字(10 到 15)并加到 num 中。
    • 如果字符是小写字母字符('a' 到 'f'),则将字符转换为对应数字(10 到 15)并加到 num 中。
    • 如果字符不是上述三种类型,则表示输入有误,函数返回 -1
  • 循环结束后,返回 num 变量的值,即转换后的十进制整数。

使用示例:

#include  <stdio.h>
#include  <stdlib.h>

int  main() {
    int  m;
    char  hex[7];
    scanf('%s', hex);
    m = conv(hex);
    if (m == -1) {
        printf('输入有误!');
    } else {
        printf('%d\n', m);
    }
    return 0;
}

输入:

57ABH

输出:

22443

本示例中,conv() 函数将 16 进制字符串 57ABH 转换为十进制整数 22443

注意:

  • 16 进制字符串必须以 'H' 或 'h' 结尾。
  • 16 进制字符串的位数必须在 1 到 6 位之间。
  • 函数返回值为 -1 表示输入有误。

希望本示例能够帮助您理解如何使用 C 语言函数将 16 进制字符串转换为十进制整数。

C语言函数实现16进制字符串转十进制整数

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

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