我有这段代码可以处理像“19485”或“10011010”或“AF294EC”这样的字符串......
long long toDecimalFromString(string value, Format format){
long long dec = 0;
for (int i = value.size() - 1; i >= 0; i--) {
char ch = value.at(i);
int val = int(ch);
if (ch >= '0' && ch <= '9') {
val = val - 48;
} else {
val = val - 55;
}
dec = dec + val * (long long)(pow((int) format, (value.size() - 1) - i));
}
return dec;
}
此代码适用于所有不在 2 的补码中的值。如果我传递一个应该是十进制负数的十六进制字符串,我不会得到正确的结果。