1、可以根据16进制转10进制的算法(即各位位码值乘以位权之和)来实现该功能。
2、具体实现方法可以参考如下程序:
#include
void main()
{
int he;
int re=0; // 保存转换为10进制的结果
int k=16; // 16进制
int n=1; // 位权
scanf("%d", &he); // 接收用户输入的16进制数,不含0x前缀
while(he != 0)
{
re += (he%10)*n; // 取出各位位码值,并乘以对应的位权值
he /= 10; // 去掉16进制数的最低位,次低位变为最低位
n *= k; // 位权乘以16
}
printf("%d",re); // 输出转换后的结果
}
#include
void main()
{
int x;
scanf("%x",&x);
printf("%d\n",x);
}
直接输入4位16进制数,中间不能加空格。
1、可以根据16进制转10进制的算法(即各位位码值乘以位权之和)来实现该功能。
2、例程:
#include
void main()
{
int he;
int re=0; // 保存转换为10进制的结果
int k=16; // 16进制
int n=1; // 位权
scanf("%d", &he); // 接收用户输入的16进制数,不含0x前缀
while(he != 0)
{
re += (he%10)*n; // 取出各位位码值,并乘以对应的位权值
he /= 10; // 去掉16进制数的最低位,次低位变为最低位
n *= k; // 位权乘以16
}
printf("%d",re); // 输出转换后的结果
}
0xa513
16^3*10 + 16^2*5 + 16^1*1 + 16^0*3
所有进制转化为10进制都是一样的,每一位乘以对应位的权值再相加。
权值就是进制的N次方,最低位为0次,依次递增
#include
#include
int func( int x)
{
int sum = 0;
for(int i = 0 ; x!= 0; i++)
{
sum = (x %16) * pow(16,i)+ sum;
x = x/ 16;
}
return sum;
}
void main()
{
int x = 0x10;
int y = func(x);
cout<
}