#include <stdio.h>
#include <string>
using namespace std;
long stringhexToLong(string str) {
long result = 0x0;
for(int i=0; i<str.size(); i=i+1) {
// 基数
long cardinalNumber = pow(16, str.size() - 1 -i);
int curValInt;
switch (str[i])
{
case 'a':
case 'A':
curValInt = 10;
break;
case 'b':
case 'B':
curValInt = 11;
break;
case 'c':
case 'C':
curValInt = 12;
break;
case 'd':
case 'D':
curValInt = 13;
break;
case 'e':
case 'E':
curValInt = 14;
break;
case 'f':
case 'F':
curValInt = 15;
break;
default:
// Number
curValInt = stoi(str.substr(i, 1));
break;
}
result += cardinalNumber * curValInt;
}
return result;
}
int main(void)
{
string txt = "7287d50000";
long result = stringhexToLong(txt);
printf("\n转换结果:%lld\n", result);
if(result == 0x7287d50000) {
printf("yes");
}
return 0;
}
c++,c将string类型的十六进制数字转换为long
最新推荐文章于 2023-07-15 15:27:05 发布