所以起初我试图在索引处使用字符,然后将其转换为nsnumber,然后获取int值,但是对于9我得到了57的值。所以我知道出了什么问题,我得到了字符本身的int。
所以我读了一下,找到了atoi,但是我得到了这个错误,这不会导致我的app jsut暂停它。
我的代码是: int current = atoi([startSquares characterAtIndex:i]);
现在startSquares是一个充满数字的大字符串,上面这行是在一个for循环中,我从0到99。
答案 0 :(得分:3)
57 is ASCII for the digit '9'
。假设“char的值”是指“char表示的数字的数值”,您可以使用ASCII中提供的简单技巧:
int digit = char - '0';
这个技巧有效,因为所有数字都是按数字零(ASCII码48)开始按顺序编码的。因此,当您从57中减去'0'
(这是另一种写48的方式)时,您得到9,即数字'9'
的值。
答案 1 :(得分:0)
这是一个糟糕的设计,你应该使用一个int数组来保存你的方块。
但如果你绝对坚持坚持你的方法,那么dasblinkenlight的方式就是你要走的路。只需从您读取的char中减去char'0'的int值。
答案 2 :(得分:-1)
如果你有一个字符c'9'并且你想要数字值9,你可以使用c - '0'。不过,目前尚不清楚这是你想要的。
如果你有一个包含一系列数字(多于一个数字)的char数组,你需要通过该数组前进一个指针,然后你可以用指针调用atoi,当它指向一个数字时(请参阅isdigit),或者您可以使用sscanf,或者,您可以将其放在NSString中并使用intValue获取下一个数字。但那会给你一个NSInteger,而不是NSNumber。我不认为你真的想要一个NSNumber,因为你不能直接占据一个方块。