我能够毫无问题地转换大多数内容,如果需要,可以进行谷歌搜索。不过,我无法想象这一点。
我有一个char数组,如:
char map[40] = {0,0,0,0,0,1,1,0,0,0,1,0,1... etc
我正在尝试将char转换为正确的整数,但无论我尝试什么,我都得到ascii值:48/49。
我已经尝试了很多不同的转换和强制转换组合,但我最终不能得到0或1,即使是作为字符。
任何人都可以帮我解决这个问题吗? 感谢。
答案 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值。