十六进制转十进制 输入字母没问题,数字总是错的,不知道哪错了,求大神解谜,谢谢

2025年03月12日 15:33
有2个网友回答
网友(1):

给你一个思路,你将十六进制先换成二进制,,,凡是有1的位置就取其对应的值,,将所有值加起来就是10进制的值了。。

比如1101 1001,这个数有1和0分别对应的位置对应的值是,128,64,0,16,8,0,0,1,加起来就是128+64+16+8+1=217

这种思路不容易搞错,你按这思路编程,就容易多了,那此什么模除整除取余之类的算法,伤脑~~~

网友(2):

#include

#include"string.h"
#include"math.h"
using namespace std;
int main()
{
string a;
double sum=0;
double num=0;
int i;
cin>>a;
size_t len = a.size();
for(i=len-1;i>=0;i--)
{

if('A'<=a[i]&&a[i]<='F') /*此处要分开写两个条件,再用&&表示“并且” */
{
num=(a[i]-55)*pow(16,len-i-1);
sum+=num;
}
else /*此处处理数字字符 */
{
num=(a[i]-48)*pow(16,len-i-1);
sum+=num;
}
}
cout< return 0;
}