web-dev-qa-db-fra.com

Convertir la chaîne en int-objectif c

Je n'ai pas pu comprendre comment convertir une NSString en un int. J'essaie de convertir ASCII en texte, mais pour ce faire, je dois convertir une chaîne en entier.

Je trouve vraiment étrange que ce ne soit pas en ligne ou en débordement de pile. Je suis sûr que je ne suis pas celui en ligne qui en a besoin.

Merci d'avance pour votre aide.

P.S. Si cela aide, voici le code que j'utilise pour convertir en ASCII:

+ (NSString *) decodeText:(NSString *)text {
    NSArray * asciiCode = [text componentsSeparatedByString:@"|"];
    int i = 0;
    NSMutableString *decoded;

    while (i < ([asciiCode count]-1) ) {

        NSString *toCode = [asciiCode objectAtIndex:i];
        int codeInt = toCode;
        NSString *decode = [NSString stringWithFormat:@"%c", codeInt];
        [decoded appendString:decode];

    }

    return decoded;
}
16
DonyorM

Pour analyser une chaîne en entier, vous devez faire:

NSString *a = @"123abc";
NSInteger b = [a integerValue];
46
User 1531343

Peut-être un peu hors sujet, mais pour convertir en ASCII vous pouvez simplement utiliser:

[NSString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]

Ou dans votre exemple:

return [text dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

Cela renverra un NSData que vous pourriez parcourir pour obtenir une représentation sous forme de chaîne de ASCII (s selon votre méthode) si c'est ce dont vous avez besoin.

La raison de l'utilisation de cette approche est que NSString peut stocker des caractères non ASCII, vous perdrez bien sûr potentiellement des détails, mais l'activation de l'indicateur allowLossyConversion tentera de surmonter cela. Selon la Apple :

Par exemple, lors de la conversion d'un caractère de NSUnicodeStringEncoding en NSASCIIStringEncoding, le caractère "Á" devient "A", perdant l'accent.

5
John Parker