以下代码应该返回两个整数:val1 = 2和val2 = 5.
NSString *col = @"1245DD";
char c1 = [col characterAtIndex:1];
char c2 = [col characterAtIndex:3];
int val1 = [[[NSString alloc] initWithUTF8String:&c1] intValue];
int val2 = [[[NSString alloc] initWithUTF8String:&c2] intValue];
在运行时检查值:
c1 ='2'
c2 ='5'
但是:
我不明白为什么val2总是最终成为c2和c1的串联。我错过了什么? 感谢,
答案 0 :(得分:3)
您正在创建一个NSString
对象作为UTF-8字符串,实际上是一个单个字符。如果你想像这样使用它,你需要NUL终止UTF-8字符串。
请注意,[NSString characterAtIndex:]
会返回unichar
,而不是char
,因此请使用[NSString initWithCharacters:length:]
代替您可以告诉方法要使用的字符数:
NSString col = @"1245DD";
unichar c1 = [col characterAtIndex:1];
unichar c2 = [col characterAtIndex:3];
int val1 = [[[NSString alloc] initWithCharacters:&c1 length:1] intValue];
int val2 = [[[NSString alloc] initWithCharacters:&c2 length:1] intValue];