2009-12-09 16 views
16

Czy są jakieś klasy Kakao, które pomogą mi przekonwertować wartość szesnastkową w NSString, jak 0x12FA na long lub NSNumber? Wygląda na to, że żadna z klas takich jak NSNumberFormatter nie obsługuje liczb szesnastkowych.Konwertuj szesnastkowy łańcuch na długi

Dzięki Hua-Ying

+3

To nie jest duplikatem http://stackoverflow.com/questions/1870475, czyli o konwersji cyfry szesnastkowe na * ciąg *. –

Odpowiedz

41

Oto krótki przykład jak można to zrobić za pomocą NSScanner:

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

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

Zobacz NSScanner's scanHex ...: metod. Dostaniesz prymityw, który możesz zawinąć w NSNumber.

7

tutaj jest inny sposób konwersji, długa long int na ciąg szesnastkowy.
najpierw heks do długiego.

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

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

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

i odwrotnie, longlong aby ciąg szesnastkowy ...

NSNumber *number; 
NSString *hexString; 

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

NSLog(@"hexString = %@", hexString); 
Powiązane problemy