c语言16进制转10进制算法
时间: 2023-11-26 07:47:03 浏览: 187
以下是C语言实现16进制转10进制的算法:
```c
#include <stdio.h>
#include <string.h>
void conversion(char str[]){
int i=0,j=0,num=0,sum=0;
int len=strlen(str);
while(str[i]!='\0') {
if(str[i]>='0'&&str[i]<='9') num=str[i]-'0'; else if(str[i]>='a'&&str[i]<='f') num=str[i]-'a'+10;
else if(str[i]>='A'&&str[i]<='F') num=str[i]-'A'+10;
else break;
for(j=0;j<len-1;j++) {
num=num*16;
}
sum+=num;
i++;
len--;
}
printf("%d",sum);
}
```
相关问题
c语言10进制转16进制算法
将一个10进制数转换为16进制数的算法可以通过以下步骤完成:
1. 首先,将给定的10进制数除以16,得到商和余数。
2. 将余数转换为相应的16进制数字。
3. 将商作为新的10进制数,重复步骤1和2,直到商为0为止。
4. 将所有的16进制数字按照倒序排列,即得到最终的16进制数。
举个例子来说明算法的实现过程:
假设要将十进制数137转换为十六进制数。按照上述步骤执行如下:
1. 137 除以 16 等于 8,余数为 9。余数9转换为十六进制数为9。
2. 将商8作为新的十进制数,重复步骤1。此时8除以16等于0,余数为8。余数8转换为十六进制数为8。
3. 将所有的十六进制数倒序排列,即得到最终的十六进制数为89。
因此,十进制数137转换为十六进制数为89。
需要注意的是,A~F表示十六进制的10~15,分别对应十进制的10~15。所以如果余数超过9,需要使用A~F来表示。
c语言实现16进制转换10进制算法
要将一个16进制数转换为10进制,可以使用以下算法:
1. 从右到左遍历16进制数的每一位。
2. 对于每一位,将其转换为对应的数值。对于0-9的数字,直接使用其数值;对于A-F的字母,分别对应10-15。
3. 将每一位的数值乘以16的幂,幂的值从0开始递增。
4. 将所有的乘积相加,得到最终的10进制结果。
以下是一个使用C语言实现16进制转换为10进制的例子:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int hexToDec(char hex[]) {
int len = strlen(hex);
int decimal = 0;
int base = 1;
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
decimal += (hex[i] - '0') * base;
}
else if (hex[i] >= 'A' && hex[i] <= 'F') {
decimal += (hex[i] - 'A' + 10) * base;
}
base *= 16;
}
return decimal;
}
int main() {
char hex[100];
printf("Enter a hexadecimal number: ");
scanf("%s", hex);
int decimal = hexToDec(hex);
printf("Decimal: %d\n", decimal);
return 0;
}
```
这个程序首先要求用户输入一个16进制数,然后调用 `hexToDec` 函数将其转换为10进制,最后输出结果。
阅读全文