16进制字符串转10进制 c语言
时间: 2023-08-30 17:08:29 浏览: 238
要将16进制字符串转换为10进制数,可以使用C语言中的标准库函数`strtol()`。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_string[] = "1A"; // 16进制字符串
long decimal = strtol(hex_string, NULL, 16); // 转换为10进制数
printf("16进制字符串 %s 转换为10进制数为 %ld\n", hex_string, decimal);
return 0;
}
```
在上面的示例中,`strtol()`函数将16进制字符串`hex_string`转换为对应的10进制数,并将结果保存在变量`decimal`中。可以通过`printf()`函数打印结果。
输出结果为:
```
16进制字符串 1A 转换为10进制数为 26
```
请注意,`strtol()`函数的第二个参数可以用于获取未转换的部分的指针。在上面的示例中,我们传递了`NULL`,因为我们不需要获取未转换的部分。如果你需要获取未转换的部分,请传递一个指向`char*`类型的指针作为第二个参数。
相关问题
16进制字符串转10进制C语言
以下是一个C语言代码示例,用于将十六进制字符串转换为十进制数:
#include <stdio.h>
#include <stdlib.h>
int main() {
char hexNum[10]; // 存储输入的十六进制数
int decNum; // 存储转换后的十进制数
printf("请输入一个十六进制数:");
scanf("%s", hexNum);
// 使用 strtol 函数将十六进制数转换为十进制数
decNum = strtol(hexNum, NULL, 16);
printf("转换后的十进制数为:%d\n", decNum);
return 0;
}
c语言16进制字符串转10进制
在C语言中,将十六进制字符串转换成十进制整数通常需要手动处理每一位,并利用`strtol()`函数或`atoi()`函数配合一些额外的步骤。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
long int hex_to_decimal(const char *hex_string) {
long int decimal = 0;
int i = 0;
while (hex_string[i]) {
if (hex_string[i] >= '0' && hex_string[i] <= '9') {
decimal = decimal * 16 + hex_string[i] - '0';
} else if (hex_string[i] >= 'a' && hex_string[i] <= 'f') {
decimal = decimal * 16 + hex_string[i] - 'a' + 10;
} else if (hex_string[i] >= 'A' && hex_string[i] <= 'F') {
decimal = decimal * 16 + hex_string[i] - 'A' + 10;
}
i++;
}
return decimal;
}
int main() {
const char* hex_str = "ff"; // 示例十六进制字符串
long int decimal_num = hex_to_decimal(hex_str);
printf("Hexadecimal %s is equal to decimal number %ld.\n", hex_str, decimal_num);
return 0;
}
```
在这个例子中,我们遍历字符串的每个字符,将其转换成相应的十进制数值并累加到结果上。注意,这个函数假设输入的字符串只包含有效的十六进制数字。
阅读全文