如何将char转换为int,反之亦然?

时间:2021-03-12 13:05:14

标签: c char type-conversion integer

我想在不使用输出格式的情况下将 char 转换为 int,反之亦然。我该怎么做?

2 个答案:

答案 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"?然后您需要使用 sscanfstrtolatoi 库函数之一(或推出您自己的等效函数)。给定

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)