c语言十六进制转十进制的算法怎么写
1个回答
展开全部
.2进制八进制和十六进制到10进制:
从2进制八进制和十六进制数的最低位(最右端第n=1位),依次将乘以进制数的n-1次方相加
例如:二进制数11010转十进制 (我用m^n表示m的n次方)
0*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 1*2^4=26;
八进制数20转十进制 0*8^0+2*8^1=16;
所以算法也是类似,这代码是借鉴别人的。如下:
#include <stdio.h>
#define N 10
int HtoD(char *s)
{
int i,d=0;
char t;
for(i=0; s[i]!='\0'; i++)
{
d=d*16;
t=s[i];
if(t>='0' && t<='9')
d=d+t-'0';
else if(t>='a' && t<='f')
{
d=d+t-'a'+10;
}
else if(t>='A' && t<='F')
{
d=d+t-'A'+10;
}
}
return d;
}
从2进制八进制和十六进制数的最低位(最右端第n=1位),依次将乘以进制数的n-1次方相加
例如:二进制数11010转十进制 (我用m^n表示m的n次方)
0*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 1*2^4=26;
八进制数20转十进制 0*8^0+2*8^1=16;
所以算法也是类似,这代码是借鉴别人的。如下:
#include <stdio.h>
#define N 10
int HtoD(char *s)
{
int i,d=0;
char t;
for(i=0; s[i]!='\0'; i++)
{
d=d*16;
t=s[i];
if(t>='0' && t<='9')
d=d+t-'0';
else if(t>='a' && t<='f')
{
d=d+t-'a'+10;
}
else if(t>='A' && t<='F')
{
d=d+t-'A'+10;
}
}
return d;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询