#pragma once #include #include using namespace std; class converte { public: converte() = delete; ~converte() = delete; public: static int valor_decimal_de(string vetor, int base) { // para bases acima de 10 usamos as letras ate Z // entao limitamos o valor da base a 36, 10 digitos // mas 26 letras long valor = 0; long fator = 1; long digito; int l = vetor.size(); cout << "\nvalor original=[" << vetor << " com " << l << " digitos. base=" << base << endl; for (int i = l - 1; i >= 0; i -= 1) { if ((vetor[i] >= '0') && (vetor[i] <= '9')) digito = vetor[i] - '0'; else if ((vetor[i] >= 'a') && (vetor[i] <= 'z')) digito = vetor[i] - 'a' + 10; else if ((vetor[i] >= 'A') && (vetor[i] <= 'Z')) digito = vetor[i] - 'A' + 10; else return -1; valor = valor + digito * fator; fator = fator * base; } cout << "valor em decimal de '" << vetor << "' na base '" << base << "' = " << valor << endl; return valor; } }; int main(int argc, char** argv) { converte::valor_decimal_de("10000", 2); converte::valor_decimal_de("100", 16); converte::valor_decimal_de("FF", 16); converte::valor_decimal_de("ffff", 16); converte::valor_decimal_de("377", 8); converte::valor_decimal_de("1b", 16); // escape em hex converte::valor_decimal_de("33", 8); // escape em octal converte::valor_decimal_de("027", 10); // escape em decimal return 0; }