c语言16进制转换为10进制数的函数、

2025-02-24 09:54:34
推荐回答(5个)
回答1:

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); // 输出转换后的结果
}

回答2:

#include 

void main()

{

 int x;

 scanf("%x",&x);

 printf("%d\n",x);

}

直接输入4位16进制数,中间不能加空格。

回答3:

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); // 输出转换后的结果
}

回答4:

0xa513
16^3*10 + 16^2*5 + 16^1*1 + 16^0*3
所有进制转化为10进制都是一样的,每一位乘以对应位的权值再相加。
权值就是进制的N次方,最低位为0次,依次递增

回答5:

#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< cout<
}