1

以下代码应该返回两个整数: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 的串联。我错过了什么?谢谢,

4

1 回答 1

3

您正在创建一个NSString对象作为 UTF-8 字符串,这实际上是一个字符。如果你想像这样使用它,你需要 NUL 终止 UTF-8 字符串。

请注意,它[NSString characterAtIndex:]返回 a unichar,而不是 a 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];
于 2012-08-02T10:58:00.217 回答