这只是将十进制转换为十六进制的一个非常简单的函数。我只是想将数字(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 :(得分:2)
您的功能声明是:
char retrieveHexChar(int num);
虚假的电话是:
retriveHexChar(temp);
你可能意味着:
retrieveHexChar(temp);
// ^
另外,case '10':
是个错误。虽然它编译,但它会检查多字节字符常量。你可能意味着case 10:
。