C ++将Ascii Int转换为Char To Int

时间:2014-02-06 06:17:46

标签: c++ int

我能够毫无问题地转换大多数内容,如果需要,可以进行谷歌搜索。不过,我无法想象这一点。

我有一个char数组,如:

char map[40] = {0,0,0,0,0,1,1,0,0,0,1,0,1... etc

我正在尝试将char转换为正确的整数,但无论我尝试什么,我都得到ascii值:48/49。

我已经尝试了很多不同的转换和强制转换组合,但我最终不能得到0或1,即使是作为字符。

任何人都可以帮我解决这个问题吗? 感谢。

2 个答案:

答案 0 :(得分:2)

表示整数的字符的ascii范围是48到57(对于'0'到'9')。您应该从字符中减去基值48以获得其整数值。

char map[40] = {'0','0','0','0','0','1','1','0','0','0','1','0','1'...};
int integerMap[40];

for ( int i = 0 ;i < 40; i++)
{
   integerMap[i] = map[i] - 48 ;
   // OR
   //integerMap[i] = map[i] - '0';


}

答案 1 :(得分:1)

如果字符是文字​​,例如'0'(请注意引号),转换为您必须执行的int:

int i = map[0] - '0';

当然,您的map数组中的操作类似。错误检查也是谨慎的,因此您知道结果int在0-9范围内。

您获得48/49的原因是因为,正如您所指出的,直接转换像int i = (int)map[0];这样的文字会给出字符的ASCII值。

相关问题