如何将低于10的int转换为char,例如:
5 - > '5'
(不使用ASCII表将int转换为char)
答案 0 :(得分:13)
由于数字在标准字符集中始终是连续的,因此您可以写:
int number = 5;
int character = number + '0';
/* Here, character == '5' */
例如,参见C11标准。
n1570,§5.2.1字符集
10位十进制数字:
0 1 2 3 4 5 6 7 8 9
[...]
在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应比前一个值大1。
同样适用于C ++。
n3337,§2.3字符集
在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应大于前一个值的值。
答案 1 :(得分:3)
如果是0-9号,最好使用:
int i = 5;
char ch = i + '0';
但可能最好的选择是使用itoa()
int i = 124;
char buffer[33];
itoa(i, buffer, 10); //10 mean decimal.
答案 2 :(得分:1)
这是一个选项
char c;
int x;
//...
switch ( x )
{
case 1:
c = '1';
break;
//and so on
}
另一个:
std::map<int, char> mapping;
mapping[1] = '1';
//...
char c = mapping[4];
答案 3 :(得分:1)
我不确定我明白你的意思是“不使用ASCII表”,但是
int i = 5;
char c = i + '0';
会做你想要的。 '0'
到'9'
的字符代码保证连续且顺序正确。