在C中将整数值转换为char?

时间:2011-03-11 08:56:40

标签: c casting integer char

我需要将整数值转换为C中的char值。正确的方法是什么?

...问候

3 个答案:

答案 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'排序,这只会起作用。我从来没有听说过没有这个属性的字符集。