C语言函数实现16进制字符串转十进制整数
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。
- 如果字符是数字字符('0' 到 '9'),则将字符转换为数字并加到
- 循环结束后,返回
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 进制字符串转换为十进制整数。
原文地址: https://www.cveoy.top/t/topic/nSel 著作权归作者所有。请勿转载和采集!