现在我正在尝试在 C 编程中将 int 转换为 char。经过研究,我发现我应该能够这样做:
int value = 10;
char result = (char) value;
我想要的是返回“A”(0-9 返回“0”-“9”),但我认为这会返回一个新行字符。
我的整个函数如下所示:
char int2char (int radix, int value) {
if (value < 0 || value >= radix) {
return '?';
}
char result = (char) value;
return result;
}
要将 int 转换为 char,您无需执行任何操作
char x;
int y;
/* do something */
x = y;
只有一个 int 到 char 值作为可打印(通常是 ASCII)数字,如您的示例所示:
const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int inttochar(int val, int base)
{
return digits[val % base];
}
如果你想转换为字符串(char *),那么你需要使用任何标准函数,如 sprintf、itoa、ltoa、utoa、ultoa .... 或自己编写一个:
char *reverse(char *str);
const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *convert(int number, char *buff, int base)
{
char *result = (buff == NULL || base > strlen(digits) || base < 2) ? NULL : buff;
char sign = 0;
if (number < 0)
{
sign = '-';
}
if (result != NULL)
{
do
{
*buff++ = digits[abs(number % (base ))];
number /= base;
} while (number);
if(sign) *buff++ = sign;
if (!*result) *buff++ = '0';
*buff = 0;
reverse(result);
}
return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)