如何在c ++中将char转换为int以获取正确的数字值?

时间:2017-04-29 15:23:42

标签: c++ char int

我想在c ++中将char转换为int,我使用char a1并转换(int)a1,但我得到了错误的值,例如: 如果a1是'1',那么49 如果a1是'2',那么50 等等... 为什么是这样?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

int atoi (const char * str)此功能在这方面很有帮助。请参阅此处的文档atoi() c++ reference

答案 1 :(得分:0)

这是因为char值通常以ASCII编码。这意味着'1'例如由数值49表示。要进行字母转换(即将'1'转换为1),请查看std::to_string ,或者,如果你正在使用c风格的字符串,请itoa

答案 2 :(得分:0)

这是因为(int)a仅转换类型而不转换值。从字面上看,它告诉编译器'将a的值视为int值',如果为'1',则返回其ASCII码49。 要翻译您可以使用的实际值:

// num == 49 - 48; 
int num = (int)a - (int)'0';

答案 3 :(得分:0)

获得实际值减去初始值 喜欢

char x='1'; //ascii value=49
int xx=x-'0' //49-48==1

char a='C'; //67
char aa=a-'A' //67-65=2 means third char of Alphabet 

或者您可以输入强制转换以获得准确的值
希望你明白这个主意。