C语言在进行n进制到十进制的转换时,主要使用数学的进制转换公式。在这个过程中,需要考虑到数值的基数以及每个位置上的权重。下面是一个简单的实现代码片段:
#include <stdio.h>
#include <string.h>
#include <math.h>
int convertToDecimal(char* str, int base){
int len = strlen(str);
int power = 1; //初始化权值为1
int num = 0; //初始化结果为0
int i;
//从低位到高位依次进行相乘求和
for (i=len-1; i>=0; i--){
//判断当前位数的字符是数字还是字母
if (str[i]>='0' && str[i]<='9')
num += (str[i] - 48)*power;
else if (str[i]>='A' && str[i]<='Z')
num += (str[i] - 55)*power;
else if (str[i]>='a' && str[i]<='z')
num += (str[i] - 87)*power;
power = power*base;
}
return num;
}
int main(){
char str[] = "1A";
int base = 16;
printf("十进制为 %d", convertToDecimal(str, base));
return 0;
}
在上述代码中,我们定义了一个函数convertToDecimal,接收一个字符串str和一个基数base。这个函数的功能就是将str所代表的base进制数转换为十进制。在main函数中,我们使用”1A”作为例子,得出其十六进制对应的十进制数值。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/172900.html