我想在c ++中将char
转换为int
,我使用char a1
并转换(int)a1
,但我得到了错误的值,例如:
如果a1是'1'
,那么49
如果a1是'2'
,那么50
等等...
为什么是这样?我该如何解决这个问题?
答案 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
或者您可以输入强制转换以获得准确的值
希望你明白这个主意。