十进制转换为十六进制

来源:互联网 发布:董洁出轨 知乎 编辑:程序博客网 时间:2024/05/21 07:49
int MySystem::HexToDecHelp(char ch){switch (tolower(ch)){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 'a':return 10;case 'b':return 11;case 'c':return 12;case 'd':return 13;case 'e':return 14;case  'f':return 15;default:break;}return 0;}int MySystem::HexToDec(string str){//讲十六进制转换为十进制//判断前两个字符是否是"0x"或者”0X“if (str.size()<2){return 0;}if ('0'!=str[0]&&'x'!=tolower(str[1])){return 0;}//由于可能会出现大于INT_MAX的情况(在整数为负数的情况下),因此现将结果保存为大数long long Result = 0;for (int i = str.size() - 1,Index=0; i>1;--i,++Index){Result += HexToDecHelp(str[i])*pow(16, Index);}if (Result>INT_MAX){Result -= (UINT_MAX+1);//由于正数和负数的不对称性,所以加上1}return Result;}

0 0