我試圖將十六進制值轉換爲十進制。我只是試圖提取一個數字(0-9)或字母(AF),我將其轉換爲數值與另一個函數,然後將值推入堆棧(我可以使用矢量,但這次選擇了堆棧)。然後我只是想獲得十進制值,並且由於一個堆棧反向工作,它應該是有序的。C++:十六進制到十進制轉換功能 - 沒有得到正確的輸出
正確的輸出,如下圖所示,應該是1728,但我事先得到12
感謝。
#include <iostream>
#include <string>
#include <math.h>
#include <stack>
using namespace std;
int hexCharToDec(char a);
void hexToDecimal(string str, stack<int> & myStack);
int main(){
stack<int> myStack;
string str = "6C0"; // should be 1728
hexToDecimal(str, myStack);
}
void hexToDecimal(string str, stack<int> & myStack){
int totalVal = 0;
for (int i = 0; i < str.length(); i++){
if (str.at(i) <= 9)
myStack.push(str.at(i));
else if (str.at(i) >= 'A' && str.at(i) <= 'F')
myStack.push(hexCharToDec(str.at(i)));
}
int k = 0;
for (int i = 0; i < myStack.size(); i++){
totalVal += (myStack.top() * pow(16, k++));
myStack.pop();
}
cout << totalVal;
}
int hexCharToDec(char hexChar){
switch(hexChar){
case 'A':
return 10;
break;
case 'B':
return 11;
break;
case 'C':
return 12;
break;
case 'D':
return 13;
break;
case 'E':
return 14;
break;
case 'F':
return 15;
break;
}}
什麼簡單地用'的std :: hex' IO-操縱? – 2014-09-30 19:27:02
我不得不說,代碼對於它的功能非常複雜。我會尋找方法來簡化它(不依靠內置函數,因爲我認爲這會破壞練習的重點)。 – NPE 2014-09-30 19:33:36
... aaand代碼被修改以修復第一個問題並且遇到新問題 – 2014-09-30 19:35:27