私は次のObjective Cコードを使用しています。ここでNSString
をint
にキャストしています。
NSString *a=@"123abc";
NSInteger b=(int) a;
NSLog(@"b: %d",b);
そしてNSLog
はこの出力を生成します:
b: 18396
なぜこれが起こっているのか誰かに説明できますか?
文字列を整数にキャストすると、文字列から数値が取得されるという印象タイプでした。
そこにNSString
オブジェクトへのポインターの整数値があります。文字列を整数に解析するには、次のようにします。
NSString *a = @"123abc";
NSInteger b = [a integerValue];
数値を取得するには、以下を使用します。
int val = [stringObj intValue];
またはNSInteger
の場合:
NSInteger val = [stringObj integerValue];
オブジェクトを整数にキャストすると、メモリアドレスへのポインタが取得されます。 [a integerValue]
を呼び出して、文字列の整数値を取得できます。
また、キャストする場合は、NSInteger
のint
を使用することをお勧めします。 64ビットのオペレーティングシステムを使用する場合、NSInteger
は64ビットになるためです。
または、Objective-Cリテラル構文を使用します。
@([a intValue]);