十六进制转换成十进制的思路:先把十六进制转换成二进制,再把二进制转换成十进制
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
string hexToBin(string hex)
{
string bin = "";
for (int i = 0; i < hex.length(); i++)
{
switch(hex[i])
{
case '0':bin += "0000";break;
case '1':bin += "0001";break;
case '2':bin += "0010";break;
case '3':bin += "0011";break;
case '4':bin += "0100";break;
case '5':bin += "0101";break;
case '6':bin += "0110";break;
case '7':bin += "0111";break;
case '8':bin += "1000";break;
case '9':bin += "1001";break;
case 'A':bin += "1010";break;
case 'B':bin += "1011";break;
case 'C':bin += "1100";break;
case 'D':bin += "1101";break;
case 'E':bin += "1110";break;
case 'F':bin += "1111";break;
}
}
return bin;
}
long long binToDecimal(string bin)
{
long long decimal = 0;
for (int i = bin.length()-1; i >= 0; i--)
{
if (bin[i] == '1')
{
decimal += pow(2, bin.length()-i-1);
}
}
return decimal;
}
int main()
{
string hexStr;
cin >> hexStr;
cout << binToDecimal(hexToBin(hexStr)) << endl;
return 0;
}
十六进制转换成十进制的思路:直接把十六进制数对16取模
#include <iostream>
#include <string>
using namespace std;
char show(int temp)
{
switch(temp)
{
case 0:return '0';
case 1:return '1';
case 2:return '2';
case 3:return '3';
case 4:return '4';
case 5:return '5';
case 6:return '6';
case 7:return '7';
case 8:return '8';
case 9:return '9';
case 10:return 'A';
case 11:return 'B';
case 12:return 'C';
case 13:return 'D';
case 14:return 'E';
case 15:return 'F';
}
}
int main()
{
long octal;
string hex = "";
cin >> octal;
if (octal == 0)
{
cout << 0;
return 0;
}
while (octal)
{
hex += show(octal%16);
octal = octal / 16;
}
for (int i = hex.length()-1; i >= 0; i--)
{
cout << hex[i];
}
return 0;
}