我想在不使用输出格式的情况下将 char
转换为 int
,反之亦然。我该怎么做?
答案 0 :(得分:1)
您是在谈论 单个 数字字符,例如 '1'
或 '9'
?然后你会做这样的事情:
char c = '5';
int x = c - '0'; // x == 5
数字编码在所有字符字符编码方案(ASCII、EBCDIC 等)中都是连续的,因此减去 '0'
的代码会得到正确的值。
您是说将字符编码转换为整数吗?然后您需要做的就是将字符值分配给 int
:
int x = '5'; // x contains the character encoding of '5' - in ASCII, 53
您是说转换字符字符串,例如 "12"
或 "42"
?然后您需要使用 sscanf
、strtol
或 atoi
库函数之一(或推出您自己的等效函数)。给定
char str[] = "123";
int x;
你愿意
sscanf( str, "%d", &x );
或
x = atoi( str );
或
char *chk;
x = (int) strtol( str, &chk, 10 );
if ( !isspace( *chk ) && *chk != 0 )
// str contained a non-numeric character, handle as appropriate
答案 1 :(得分:0)
如果你想打印一个字符的ASCII值
char c1 = 'A';
printf("%d",(int)c1); //Prints ASCII value of character 'A' = (65)
下面这段代码也打印了一个字符的 ASCII 值
char c1 = 'A';
printf("%d ",c1); //Prints ASCII value of character 'A' = (65)
如果你想打印一个字符的值
char c2 = '5';
int x = c2-'0';
printf("%d",x); //prints integer value of character '5'(5)