2014-09-30 24 views
-2

这只是将十进制转换为十六进制的一个非常简单的函数。我只是想将数字(0-9)存储到一个字符串中,然后编写一个简单的函数来检索数字10-16的字母值。 出于某种原因,编译器说,retriveHexChar函数没有在范围内声明(当我在我的decimalToHex函数中使用它时)。我的程序/功能也可能存在其他问题。将十进制转换为十六进制值的函数(在我的程序中出错)

#include <iostream> 
#include <string> 

using namespace std; 

char retrieveHexChar(int num); 
void decimalToHex(int number, string s); 

int 
main() 
{ 

    string s; 
    int num = 235; 

    decimalToHex(num, s); 

} 

void 
decimalToHex(int number, string s) 
{ 

    if (number > 0) { 

     int temp = number % 16; 
     s += temp; 
     number = number/16; 

     if (temp >= 10) 

      s += retriveHexChar(temp); 


     decimalToHex(number, s); 

    } 

    for (int i = s.length(); i > 0; i--) 
     cout << s[i]; 

} 

char 
retrieveHexChar(int num) 
{ 

    char tempChar; 

    switch (num) { 

    case '10': 
     tempChar = 'A'; 
     break; 

    case '11': 
     tempChar = 'B'; 
     break; 

    case '12': 
     tempChar = 'C'; 
     break; 

    case '13': 
     tempChar = 'D'; 
     break; 

    case '14': 
     tempChar = 'E'; 
     break; 

    case '15': 
     tempChar = 'F'; 
     break; 
    } 
    return tempChar; 

} 
+0

简单拼写错误;你有一个缺少'e':'retriveHexChar'对'retrieveHexChar' – 0x499602D2 2014-09-30 03:18:33

+0

我看着它,并认为它是嵌套的。我应该缩进编辑,我会注意到;-)谢谢 – 2014-09-30 03:21:29

回答

2

你的函数声明:

char retrieveHexChar(int num); 

伪造电话是:

retriveHexChar(temp); 

你大概的意思是:

retrieveHexChar(temp); 
// ^

此外,case '10':是一个错误。虽然它编译,它检查多字节字符常量。你可能意思是case 10:

+0

谢谢你们......对不小心的错误感到抱歉。在将它带到这里之前,我应该抓住它。 – user2411290 2014-09-30 03:25:35