如何将任何基数转换为大数字的基数10

时间:2017-01-05 13:54:20

标签: c++

我想将一个大数字(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所以,我想知道解决方案是什么?!

0 个答案:

没有答案