2009-12-09 7 views
16

Existe-t-il des classes Cocoa qui m'aideront à convertir une valeur hexadécimale dans un NSString comme 0x12FA en long ou NSNumber? Il ne semble pas que l'une des classes comme NSNumberFormatter prend en charge les nombres hexadécimaux.Convertir la chaîne hexadécimale en longue

Merci, Hua-Ying

+3

Ce n'est pas un double de http://stackoverflow.com/questions/1870475, qui est sur la conversion des chiffres hexadécimaux à * une chaîne *. –

Répondre

41

Voici un court exemple de la façon dont vous le feriez en utilisant NSScanner:

NSString* pString = @"0xDEADBABE"; 
NSScanner* pScanner = [NSScanner scannerWithString: pString]; 

unsigned int iValue; 
[pScanner scanHexInt: &iValue]; 
11

Voir NSScanner's scanHex ...: méthodes. Cela vous donnera la primitive que vous pouvez envelopper dans un NSNumber.

7

est ici l'autre conversion de chemin, un long int à chaîne hexagonale.
d'abord l'hexagone à long long.

NSString* pString = @"ffffb382ddfe"; 
NSScanner* pScanner = [NSScanner scannerWithString: pString]; 

unsigned long long iValue2; 
[pScanner scanHexLongLong: &iValue2]; 

NSLog(@"iValue2 = %lld", iValue2); 

et dans l'autre sens, LONGLONG chaîne hexagonale ...

NSNumber *number; 
NSString *hexString; 

number = [NSNumber numberWithLongLong:iValue2]; 
hexString = [NSString stringWithFormat:@"%qx", [number longLongValue]]; 

NSLog(@"hexString = %@", hexString); 
Questions connexes