ObjC字符串/字符操作+解析

时间:2012-08-02 10:51:17

标签: objective-c parsing nsstring char

以下代码应该返回两个整数: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'

到目前为止还不错。

但是:

  • val1 = 2
  • val2 = 52

我不明白为什么val2总是最终成为c2和c1的串联。我错过了什么? 感谢,

1 个答案:

答案 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];