16进制怎样换成10进制

如题所述

第1个回答  2013-09-04
按位权来转换进制.
R进制的数,从右往左,位权分别是R的0次方,R的1次方,R的2次方....
比如:16进制数6F,F所在的位的位权是16的0次(即1),那么F的值就是F*1;6所在的位权是16,那么6的值就是6*16.
那么,6F的10进制数就是15+6*16=111
第2个回答  2013-09-04
//7F F F F F F F 之后的数据有点问题。。之前的数据都正确。
#include<stdio.h>
#include<string.h>
int b[100]={0};//存放得出的数a[0]放个位的数 a[1]放十位上的数,依次类推。
int l=0;//l为最高位;
void jia(int s)
{
int j=0,t;
for(t=1;;t++)
if(s/10==0) {b[j]+=s;l=j+1;if(b[j]>=10){b[j]=b[j]-10;b[j+1]++;l++;}j++;break;}
else {b[j]+=s%10;if(b[j]>=10){b[j]=b[j]-10;b[j+1]++;}s=s/10;j++;}
}
void main()
{
int len,i,k=1,s=0,n;
char num[100];
printf("请输入要测试数据的个数:");
scanf("%d",&n);
while(n--)//可输入n个数据来测试,n自减,到0结束。
{ k=1;l=0;
for(i=0;i<100;i++)
b[i]=0; //
scanf("%s",num);
len=strlen(num);
for(i=len-1;i>=0;i--)
{

if(num[i]>='A'&&num[i]<='F')
{
s=int(num[i]-55)*k;
jia(s);
k=k*16;

}
if(num[i]>='0'&&num[i]<='9')
{
s=int(num[i]-48)*k;
jia(s);
k=k*16;}
}
for(i=l-1;i>=0;i--)
printf("%d",b[i]);//l-1在数组中放的是最高位上的数;
printf("\n\n");
}
}
第3个回答  2013-09-04
如16进制3E转为10进制为3x16+14(E对应14)=62
相似回答