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

时间:2011-03-16 07:09:15

标签: c ascii character

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

8 个答案:

答案 0 :(得分:19)

怎么样:

int a_as_int = (int)'a';

答案 1 :(得分:11)

你在寻找:

int c = some_ascii_character;

或者只是在没有作业的情况下转换:

(int)some_aschii_character;

答案 2 :(得分:5)

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

#include <stdlib.h>

int num = atoi("23"); // 23

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

int num = atoi("23.21"); // 23

答案 3 :(得分:3)

我同意Ashot和Cwan,但也许你想将像'7'这样的ascii-cipher转换成像7这样的int?

然后我重新开始:

char seven = '7';
int i = seven - '0'; 

<击> 或者,也许你会收到警告,

int i = (int) (seven - '0'); 

<击> 评论后更正,谢谢。

答案 4 :(得分:2)

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

答案 5 :(得分:1)

你的意思是ASCII序数值?尝试像这样的类型转换:

int x = 'a';

答案 6 :(得分:0)

正如其他人告诉你的那样,你可以直接转换它......除非你的意思是“如何将ASCII扩展字符转换为UTF-16或UTF-32值”。这是一个完全不同的问题(一个至少同样好)。如果我没记错的话,一个非常困难,如果你只使用“纯粹的”C.那么你可以从这里开始:https://stackoverflow.com/questions/114611/what-is-the-best-unicode-library-for-c/114643#114643

(对于ASCII扩展,我指的是ASCII集的许多“扩展”之一。基本ASCII集的0-127个字符可直接转换为Unicode,而128-255不是。)。例如,ISO_8859-1 http://en.wikipedia.org/wiki/ISO_8859-1是7位ASCII集的8位扩展,或(非常着名的)代码页437和850。

答案 7 :(得分:0)

使用C99标准库是不可能的,除非您手动将字符常量中的映射写入相应的ASCII int值。

C中的字符常量[textView resignFirstResponder]; 不能保证为ASCII。

C99仅对这些常数做出一些保证,例如:那digits be contiguous

单词ASCII仅显示在页脚注释中的C99 N1256 standard draft上,而页脚注释173表示:

  

在使用七位US ASCII字符集的实现中,打印字符是那些   其值从0x20(空格)到0x7E(代字号);控制字符是那些   值从0(NUL)到0x1F(US),字符0x7F(DEL)。

暗示ASCII不是唯一的可能性