C++从任意进制的数转换成另外一个指定进制的数的代码

2020-06-09  本文已影响0人  hahamama

下面内容内容是关于C++从任意进制的数转换成另外一个指定进制的数的内容,应该是对各位朋友有些用处。

#include <iostream>

#include <string>

std::string conv(std::string number, int startBase, int endbase);

long long power(int num, int pow);

int main(void){

    std::string binary = "11010010";

    std::cout << "Start Base: Binary (" << binary << ")" << std::endl;

    std::cout << "Octal:tt" << conv(binary, 2, 8) << std::endl;

    std::cout << "Decimal:t" << conv(binary, 2, 10) << std::endl;

    std::cout << "Hexadecimal:t" << conv(binary, 2, 16) << std::endl << std::endl;

    std::string octal = "81";

    std::cout << "Start Base: Octal (" << octal << ")" << std::endl;

    std::cout << "Binary:tt" << conv(octal, 8, 2) << std::endl;

    std::cout << "Decimal:t" << conv(octal, 8, 10) << std::endl;

    std::cout << "Hexadecimal:t" << conv(octal, 8, 16) << std::endl << std::endl;

    std::string decimal = "41";

    std::cout << "Start Base: Decimal (" << decimal << ")" << std::endl;

    std::cout << "Binary:tt" << conv(decimal, 10, 2) << std::endl;

    std::cout << "Octal:tt" << conv(decimal, 10, 8) << std::endl;

    std::cout << "Hexadecimal:t" << conv(decimal, 10, 16) << std::endl << std::endl;

    std::string hexadecimal = "A9";

    std::cout << "Start Base: Hexadecimal (" << hexadecimal << ")" << std::endl;

    std::cout << "Binary:tt" << conv(hexadecimal, 16, 2) << std::endl;

    std::cout << "Octal:tt" << conv(hexadecimal, 16, 8) << std::endl;

    std::cout << "Decimal:t" << conv(hexadecimal, 16, 10) << std::endl << std::endl;

    return 0;

}

std::string conv(std::string number, int startBase, int endBase){

    if(startBase > 16 || endBase > 16) return "BASE ERROR";

    char NUMS[] = "0123456789ABCDEF";

    std::string result = "";

    int temp = 0, x;

    bool found = false;

    for(int i = 0; i < number.length(); i++){

        for(x = 0; x < startBase; x++){

            if(NUMS[x] == number[number.length()-(i+1)]){

                found = true;

                break;

            }

        }

        if(!found) return "NUMBER ERROR";

    }

    do{

        result.push_back(NUMS[temp%endBase]);

        temp /= endBase;

    }while(temp != 0);

    return std::string(result.rbegin(), result.rend());

}

long long power(int num, int pow){

    if(pow == 0) return 1;

}

上一篇 下一篇

猜你喜欢

热点阅读