我正在寫一個小程序轉換字符串的十六進制表示,它是一個提高我技能的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