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;
}十进制转换为十六进制
最新推荐文章于 2025-09-27 11:05:11 发布
本文介绍了一个实用的十六进制字符串转十进制数值的C++函数。该函数首先检查输入字符串是否以0x开头,然后逐位解析十六进制字符并将其转换为对应的十进制值。
6983

被折叠的 条评论
为什么被折叠?



