1

Flickr 画像の URL を受け取り、画像の ID を返す基本的なメソッドを作成していました。私はメソッドを渡していNSString @"http://farm6.staticflickr.com/5183/5629026092_c6762a118f"ます。

5629026092目標は、画像の URL にあるint: を返すことであり、画像の ID です。

これが私の方法です:

-(int)getImageIDFromFlickrURL:(NSString *)imageURL{
    NSArray *objectsInURLArray = [imageURL componentsSeparatedByString:@"/"];
    NSString *lastObjectInFlickrArray = [objectsInURLArray lastObject];
    NSArray *dirtyFlickrIdArray = [lastObjectInFlickrArray componentsSeparatedByString:@"_"];
    NSString *flickIDString = [dirtyFlickrIdArray objectAtIndex:0];
    NSLog(@"flickr id string: %@",flickIDString);
    int flickrID = [flickIDString intValue];
    NSLog(@"id: %i",flickrID);
    return flickrID;
}

コンソールの出力は次のとおりです。

2012-05-26 13:30:25.771 TestApp[1744:f803] flickr id string: 5629026092
2012-05-26 13:30:25.773 TestApp[1744:f803] id: 2147483647

呼び出しintValueが実際の番号を変形させるのはなぜですか?

4

4 に答える 4

1

代わりに使用してくださいlong long、あなたの数は処理できるよりも大きいです(あなたが2番目のログで見ることができるようにint最大です)2147483647

于 2012-05-26T19:42:07.660 に答える
1

値が大きすぎて 32 ビットで表現できません。符号付き 32 ビット整数 (int) に保存できる最大値は 2147483647 です。符号なし整数の場合は 4294967295 です。5629026092 の数値を表すには、long long 整数に変換する必要があります。

おそらく、そのための数値フォーマッタを作成する必要があります。私は数値フォーマッタの専門家ではなく、常にドキュメントを掘り下げて使用方法を理解する必要があります。

試してみたところ、このコードは機能します:

  NSString *numberString = @"5629026092";

  NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

  NSNumber *number = [formatter numberFromString: numberString];
  long long value = [number longLongValue];
  NSLog(@"%@ = %qi", numberString, value);
  [formatter release];

文字列を C 文字列に変換して scanf を使用することもできます。

于 2012-05-26T20:25:16.187 に答える
0

Easy ^^:INT_MAXint型の変数の最大値。2147483647

于 2012-05-26T19:43:03.803 に答える
0

これが便利な方法であることがわかりました:

NSString *flickIDString = [dirtyFlickrIdArray objectAtIndex:0]; // read some huge number into a string

// read into a NSNumber object or a long long variable. you choose
NSNumber *flickIDNumber = flickIDString.longLongValue;
long long flickIDLong = flickIDString.longLongValue;
于 2012-06-08T23:11:47.660 に答える