2009-12-09 1 views
16

Esistono classi Cocoa che possono aiutarmi a convertire un valore esadecimale in una NSString come 0x12FA in un long o NSNumber? Non assomiglia a nessuna delle classi come i numeri esadecimali di supporto NSNumberFormatter.Converti stringa esadecimale a lungo

Grazie, Hua-Ying

+3

Questo non è un duplicato di http://stackoverflow.com/questions/1870475, che è sulla conversione delle cifre esadecimali a * una stringa *. –

risposta

41

Ecco un breve esempio di come si dovrebbe fare usando NSScanner:

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

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

Vedi NSScanner's scanHex ...: metodi. Questo ti renderà il primitivo che puoi avvolgere in un NSNumber.

7

qui è l'altro di conversione modo, un long int lungo per stringa esadecimale.
prima l'esagono a lungo.

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

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

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

e l'altro modo, longlong di stringa esadecimale ...

NSNumber *number; 
NSString *hexString; 

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

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