我正在编写一段代码,它返回给定字符串和基数的以10为基数的值。但是对于以10为基数的大数值,我的程序只返回705032704。
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int val(char c)
{
if (c >= '0' && c <= '9')
return (int)c - '0';
else
return (int)c - 'A' + 10;
}
long long basemachine(int base, char *str) { //this function returns answer in base 10
int len=strlen(str); int power=1; long long num=0;
for (int i=len-1; i>=0; i--) {
num+= val(str[i])*power;
power=power*base;
}
return num;
}
int main() {
char str1[]="2P6X2MU";
char str2[]="6PMP5GK";
long long n=basemachine(35, str1);
long long m=basemachine(30, str2);
cout<<n<<" "<<m;
return 0;
}(2P6X2MU) base 35和(6PMP5GK) base 30均= 5000000000
但是我的代码返回的是705032704 705032704而不是5000000000 5000000000
我该如何解决这个问题?
发布于 2019-10-07 20:42:54
power的类型为int,而不是long long。
https://stackoverflow.com/questions/58269704
复制相似问题