c语言16进制转换十进制pta
时间: 2024-11-06 12:20:32 浏览: 46
在C语言中,将十六进制数转换为十进制可以使用标准库函数`atoi()`或`strtol()`,这两个函数可以处理字符串形式的数字。如果你只有固定长度的十六进制数需要转换,也可以通过循环和位运算手动实现。
以下是手动实现的一个简单示例:
```c
#include <stdio.h>
// 函数用于16进制转10进制
int hex_to_decimal(char hex_digit) {
if (hex_digit >= '0' && hex_digit <= '9') {
return hex_digit - '0'; // 对于0-9直接减去ASCII码的差值就是对应的数值
} else if (hex_digit >= 'A' && hex_digit <= 'F') {
return hex_digit - 'A' + 10; // 对于A-F,先减去'A'然后加10
} else if (hex_digit >= 'a' && hex_digit <= 'f') {
return hex_digit - 'a' + 10; // 对于a-f同理
}
return -1; // 如果输入不是有效的十六进制字符,则返回错误值
}
int main() {
char hex_str[] = "FF"; // 十六进制字符串
int decimal_num = 0;
for (int i = 0; hex_str[i]; ++i) {
decimal_num <<= 4; // 左移4位相当于乘以16
decimal_num += hex_to_decimal(hex_str[i]); // 添加当前十六进制位对应的值
}
printf("十六进制 %s 转换为十进制是:%d\n", hex_str, decimal_num);
return 0;
}
```
运行上面的程序,会得到"十六进制 FF 转换为十进制是:255"这样的结果。
阅读全文