我想将一个大数字(100,000位数)从任何基数转换为基数10.我正在使用此代码:
这是读取文件方法
string* ReadFile(string fileName) {
ifstream inFile(fileName);
string line;
string* myArray = new string[1000000];
if (inFile.is_open()) {
int count = 0;
while (getline(inFile, line)) {
myArray[count] = line;
count++;
}
inFile.close();
}
else
{
cout << "file is not open";
}
return myArray;}
将每个字符转换为基数为10的方法
int val(char c){
if (c >= '0' && c <= '9')
return (int)c - '0';
else
return (int)c - 'A' + 10; }
任何基数到十进制
int Base2Dec(string* arr) {
int base = stoi(arr[0]);
string str = "";
int size = 0;
while (!arr[size].empty())
++size;
for (int i = size; i > 0; i--) {
str += arr[i];
}
int len = str.length();
int power = 1;
int num = 0;
for (int i = len - 1; i >= 0; i--)
{
if (val(str[i]) >= base)
{
printf("Invalid Number");
}
num += val(str[i]) * power;
power = power * base;
}
return num;}
和主要方法
int main(){
string* A = ReadFile("A2.txt"); cout << Base2Dec(A);
string* B = ReadFile("B.txt"); Base2Dec(B);
cin.get();}
它可以工作,但不是100,000个数字?我知道int类型是有限的,我不允许使用int64所以,我想知道解决方案是什么?!