1

次のコードは、val1 = 2 と val2 = 5 の 2 つの整数を返すことになっています。

    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'

これまでのところ良い。

しかしその後:

  • 値1 = 2
  • val2 = 52

val2 が常に c2 と c1 の連結になる理由がわかりません。私は何が欠けていますか?ありがとう、

4

1 に答える 1

3

オブジェクトを UTF-8 文字列として作成していますがNSString、これは実際には 1 文字です。このように使用する場合は、UTF-8 文字列を NUL で終了する必要があります。

ではなくを[NSString characterAtIndex:]返すことに注意してください。代わりに、使用する文字数をメソッドに伝えることができる場所で使用します。unicharchar[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 に答える