如何将 char 转换为 int,反之亦然?
How to convert char to int, and vice versa?
我想在不使用输出格式的情况下将 char
转换为 int
,反之亦然。我该怎么做?
您指的是 单 数字字符,例如 '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
如果要打印字符的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)
我想在不使用输出格式的情况下将 char
转换为 int
,反之亦然。我该怎么做?
您指的是 单 数字字符,例如 '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
如果要打印字符的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)