繁体   English   中英

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

[英]How to convert an ASCII character into an int in C

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

关于什么:

int a_as_int = (int)'a';

你在找这个:

int c = some_ascii_character;

或者只是转换而不分配:

(int)some_aschii_character;

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

#include <stdlib.h>

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

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

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

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

然后我重新开始:

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

或者,也许你得到一个警告,

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

评论后更正,谢谢。

C中的char值可以隐式转换为int。 例如, char c; ... printf("%d", c) 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。

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

int x = 'a';

除非您手动将字符常量中的映射写入相应的ASCII int值,否则无法使用C99标准库

'a'这样'a'字符常量不能保证是ASCII。

C99只对这些常量做出一些保证,例如,这些数字是连续的

单词ASCII仅出现在页脚注释中的C99 N1256标准草案上,页脚注释173)表示:

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

暗示ASCII不是唯一的可能性

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM