我需要将整数值转换为C中的char值。正确的方法是什么?
...问候
答案 0 :(得分:6)
他们可以隐含地兑换......
int x = 65;
char c = x; // 'A'
putchar(x);
printf("%c", x);
char asciiz[] = { 65, 32, 66, 32, 67, 0 };
你可以用例如明确的方式做到这一点(char)65
,在C ++中特别有用,其中重载和模板使编写的代码根据常见类型而有所不同。
如果您实际上是想获得一个数字的(可能是多个)字符表示,那么您可以使用printf(“%d”,x)将其打印到标准输出,或者:
char buffer[16]; // biggest int is 4 billion so ~10 chars, round up for safety
sprintf(buffer, "%d", x);
// say x was 128, buffer now contains [0] = '1', [1] = '2', [2] = '8', [3] = NUL.
答案 1 :(得分:1)
简单的答案是:
(char)my_int;
然而,一个简单的char
可能并不是你想要的。在C中,有'charign','unsigned char'和'plain“char
。不幸的是,如果普通char
已签名或未签名,则它是实现定义的。因此,如果您计划在重要的环境中使用向下转换整数,请确保选择正确的char类型。
答案 2 :(得分:0)
如果你想获得整数位1,2,3,4,5,6,7,8,9和0的char表示,你可以这样做:
char ToChar(int value)
{
assert(value >= 0 && value <= 9);
return '0' + value;
}
如果要在混音中包含十六进制数字,可以执行以下操作:
char ToChar(int value)
{
assert(value >= 0 && value <= 15);
return value < 10 ? '0' + value : 'a' + value - 10;
}
如果字符在字符集中从'0'到'9'排序,这只会起作用。我从来没有听说过没有这个属性的字符集。