我正在写一个小程序转换字符串的十六进制表示,它是一个提高我技能的kata。Codekata将数字从十六进制转换为十进制整数表示
这是我想出了
std::vector<int> decimal(std::string const & s)
{
auto getint = [](char const k){
switch(k){
case 'f':
return 15;
case 'e':
return 14;
case 'd':
return 13;
case 'c':
return 12;
case 'b':
return 11;
case 'a':
return 10;
case '9':
return 9;
case '8':
return 8;
case '7':
return 7;
case '6':
return 6;
case '5':
return 5;
case '4':
return 4;
case '3':
return 3;
case '2':
return 2;
case '1':
return 1;
case '0':
return 0;
};
std::vector<int> result;
for(auto const & k : s)
{
result.push_back(getint(k));
}
return result;
}
我是否有这样做想以另一种方式。我也考虑过使用std :: map作为东西,但我不确定哪一个可能会更快。如果有另一种方法可以做到这一点,请添加它。
请记住,我正在做这个代码卡塔来提高我的技能,并学习。
谢谢TIA!
在担心速度之前,您应该担心正确性。当它应该是'{1,7,0}'时,你将'aa'转换为'{10,10}'。 – molbdnilo
你有正确性问题,但会很高兴检查这个http://stackoverflow.com/questions/34365746/whats-the-fastest-way-to-convert-hex-to-integer-in-c/34366370#34366370为了快速写出getint() – g24l