将十进制转换为十六进制值的函数(程序中的错误)

时间:2014-09-30 03:11:57

标签: c++ string hex decimal

这只是将十进制转换为十六进制的一个非常简单的函数。我只是想将数字(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;

}

1 个答案:

答案 0 :(得分:2)

您的功能声明是:

char retrieveHexChar(int num);

虚假的电话是:

retriveHexChar(temp);

你可能意味着:

retrieveHexChar(temp);
//   ^

另外,case '10':是个错误。虽然它编译,但它会检查多字节字符常量。你可能意味着case 10: