Gostaria de saber como analisar uma string hexadecimal, representando um número, em Objective-C. Estou disposto a usar um método objetivo ou baseado em C, qualquer um está bom.
exemplo:
#01FFFFAB
deve analisar no número inteiro: 33554347
Qualquer ajuda seria apreciada!
0x
(ou0X
). O NSScanner aceitará esses prefixos.você pode usar o NSScanner para isso
outVal
conterá o int que você está procurando. O 0x é opcional.fonte
strtol () é seu amigo.
Ele converte uma string em uma longa, e você pode passar a base do número. No entanto, retire esse # sinal ou passe para o strtol um ponteiro para o primeiro caractere numérico.
fonte
strtol
função também é muito mais branda. Escreva testes de unidade completos (incluindo espaços, caracteres não hexadecimais, etc.), pois você encontrará alguns casos extremos surpreendentes queNSScanner
lhe darão mais controle sobre eles.Você pode usar a linha abaixo para conversão. É apenas um código de linha:
Happy Coding !!!
fonte
0x
(ou0X
) ou +/- ou qualquer outro caractere que não seja considerado válido em sua entrada.A biblioteca padrão do Swift 4 introduziu um novo inicializador para analisar todos os tipos de inteiros. É necessário string para analisar com base (ou seja, base) e retorna um inteiro opcional:
fonte
De acordo com a apple:
então, se você tiver
NSData
obj, você pode fazer o próximofonte
0x
(ou0X
) ou quaisquer outros caracteres que não são considerados válidos em sua entrada, mas que são aceitos pelo NSScanner.Para Swift 3:
fonte