十六进制与十进制之间的转换

来源:互联网 发布:中卫云计算2018,130 编辑:程序博客网 时间:2024/06/06 13:06

十六进制转换成十进制的思路:先把十六进制转换成二进制,再把二进制转换成十进制

#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;}
0 0
原创粉丝点击