如何将ascii字符转换为C中的int

nod*_*nja 18 c ascii character

如何将ascii字符转换为C中的int?

rjn*_*son 20

关于什么:

int a_as_int = (int)'a';
Run Code Online (Sandbox Code Playgroud)

  • 实际上C中的'a'与C++不同,已经是int. (13认同)
  • 我将为论证添加必要的参考:http://stackoverflow.com/questions/433895/why-are-c-character-literals-ints-instead-of-chars (2认同)

Umm*_*mma 15

你在找这个:

int c = some_ascii_character;
Run Code Online (Sandbox Code Playgroud)

或者只是转换而不分配:

(int)some_aschii_character;
Run Code Online (Sandbox Code Playgroud)


use*_*own 14

我同意 Ashot 和 Cwan,但也许您喜欢将像 '7' 这样的 ascii-cipher 转换为像 7 这样的 int?

那我建议:

char seven = '7';
int i = seven - '0'; 
Run Code Online (Sandbox Code Playgroud)

或者,也许你会收到警告,

int i = (int) (seven - '0'); 
Run Code Online (Sandbox Code Playgroud)

评论后更正,谢谢。


Jim*_*ter 6

C 中的 char 值可隐式转换为 int。例如,char c; ... printf("%d", c)打印 的十进制 ASCII 值c,并将int i = c;的 ASCII 整数值放入ci。您还可以使用 显式转换它(int)c。如果您指的是其他内容,例如如何将 ASCII 数字转换为 int,那就是c - '0',它隐式转换c为 int,然后减去 的 ASCII 值'0',即 48(在 C 中,诸如'0'int 类型的字符常量,而不是 char,由于历史原因)。


Sha*_*ear 6

使用ASCII转换为整数atoi()函数,该函数接受字符串并将其转换为整数:

#include <stdlib.h>

int num = atoi("23"); // 23
Run Code Online (Sandbox Code Playgroud)

如果字符串包含小数,则数字将被截断:

int num = atoi("23.21"); // 23
Run Code Online (Sandbox Code Playgroud)

  • “ 23”不是ASCII字符,因此与(不清楚)问题无关。 (2认同)