Objective-C analisa string hexadecimal para inteiro

Eu gostaria de saber como analisar uma cadeia hexadecimal, representando um número, em Objective-C. Estou disposto a usar tanto um objective quanto um método baseado em C, ou está bem.

exemplo:

#01FFFFAB 

deve analisar no inteiro: 33554347

Qualquer ajuda seria apreciada!

    A resposta de Joshua Weinberg é na maior parte correta, entretanto o prefixo 0x é opcional ao escanear inteiros hexadecimais. Se você tiver uma string no formato #01FFFFAB , ainda poderá usar o NSScanner , mas poderá pular o primeiro caractere.

     unsigned result = 0; NSScanner *scanner = [NSScanner scannerWithString:@"#01FFFFAB"]; [scanner setScanLocation:1]; // bypass '#' character [scanner scanHexInt:&result]; 

    você pode usar o NSScanner para isso

     unsigned int outVal; NSScanner* scanner = [NSScanner scannerWithString:@"0x01FFFFAB"]; [scanner scanHexInt:&outVal]; 

    outVal conterá o int que você está procurando. O 0x é opcional.

    strtol () é seu amigo.

    Converte uma string para um longo, e você pode passar a base do número para dentro. Desmarque que # desligue primeiro, ou passe para strtol um ponteiro para o primeiro caractere numérico.

    Você pode usar a linha abaixo para conversão. É apenas um código de linha:

     NSString *hexString = @"01FFFFAB"; length = (UInt64)strtoull([hexString UTF8String], NULL, 16); NSLog(@"The required Length is %d", length); 

    Codificação Feliz !!!

    De acordo com a maçã:

    Um object NSScanner interpreta e converte os caracteres de um object NSString em valores numéricos e de string.

    Então, se você tiver NSData obj u pode fazer o próximo

     NSString *dataDescription = data.description; NSString *dataAsString = [dataDescription substringWithRange:NSMakeRange(1, [dataDescription length]-2)]; unsigned intData = 0; NSScanner *scanner = [NSScanner scannerWithString:dataAsString]; [scanner scanHexInt:&intData]; 

    Para o Swift 3:

     var hex = "#01FFFFAB" hex.remove(at: hex.startIndex) var rgbValue:UInt32 = 0 Scanner(string: hex).scanHexInt32(&rgbValue) // rgbValue == 33554347 

    A biblioteca padrão do Swift 4 introduziu um novo inicializador para analisar todos os tipos inteiros. Leva string para analisar com radix (ou seja, base) e retorna inteiro opcional:

     let number = Int("01FFFFAB", radix: 16)!