22

私はObjectiveCコードのこのビットを持っています、そこで私はにキャストしNSStringていintます:

NSString *a=@"123abc";
NSInteger b=(int) a;
NSLog(@"b: %d",b);

そして、は次のNSLog出力を生成します。

b: 18396

なぜこれが起こっているのか誰かが私に説明できますか?

文字列を整数にキャストすると、文字列から数値が取得されるという印象型でした。

4

4 に答える 4

39

NSStringそこにオブジェクトへのポインタの整数値があります。文字列を整数に解析するには、次のようにする必要があります。

NSString *a = @"123abc";
NSInteger b = [a integerValue];
于 2012-10-24T09:09:13.617 に答える
12

数値を取得するには、次を使用します。

int val = [stringObj intValue];

またはNSInteger

NSInteger val = [stringObj integerValue];
于 2012-10-24T09:09:22.740 に答える
5

オブジェクトを整数にキャストすると、メモリアドレスへのポインタを取得します。を呼び出して[a integerValue]、文字列の整数値を取得できます。

また、キャストするときは、の状態を使用することをNSIntegerお勧めしintます。64ビットオペレーティングシステムを使用する場合、aは64ビットにNSIntegerなるためです。

于 2012-10-24T09:07:59.910 に答える
0

またはObjective-Cリテラル構文を使用する場合:

@([a intValue]);
于 2012-10-24T09:14:24.787 に答える