2009-12-09 28 views
16

¿Hay alguna clase de Cocoa que me ayude a convertir un valor hexadecimal en un NSString como 0x12FA a long o NSNumber? No parece que ninguna de las clases como NSNumberFormatter soporte números hexadecimales.Convertir cadena hexadecimal a larga

Gracias, Hua Ying-

+3

Esto no es un duplicado de http://stackoverflow.com/questions/1870475, que es acerca de cómo convertir los dígitos hexadecimales a * una cadena *. –

Respuesta

41

He aquí un breve ejemplo de cómo usted lo haría utilizando NSScanner:

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

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

Ver NSScanner's scanHex ...: métodos. Eso te dará el primitivo que puedes envolver en un NSNumber.

7

aquí es la otra manera de conversión, un largo long int a cadena hexadecimal.
primero el hexágono a largo largo.

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

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

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

y la otra manera, longlong a cadena hexadecimal ...

NSNumber *number; 
NSString *hexString; 

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

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