Ответ 1
Вот краткий пример того, как вы это сделаете, используя NSScanner:
NSString* pString = @"0xDEADBABE";
NSScanner* pScanner = [NSScanner scannerWithString: pString];
unsigned int iValue;
[pScanner scanHexInt: &iValue];
Существуют ли какие-либо классы Cocoa, которые помогут мне преобразовать шестнадцатеричное значение в NSString, например 0x12FA
, в long
или NSNumber
? Он не похож ни на один из классов, как NSNumberFormatter
поддерживает шестнадцатеричные числа.
Спасибо, Хуа-Ин
Вот краткий пример того, как вы это сделаете, используя NSScanner:
NSString* pString = @"0xDEADBABE";
NSScanner* pScanner = [NSScanner scannerWithString: pString];
unsigned int iValue;
[pScanner scanHexInt: &iValue];
См. методы сканирования NSScanner: методы. Это даст вам примитив, который можно обернуть в NSNumber.
здесь есть другой способ преобразования, длинный длинный int в шестнадцатеричную строку.
сначала шестнадцатеричный длинный.
NSString* pString = @"ffffb382ddfe";
NSScanner* pScanner = [NSScanner scannerWithString: pString];
unsigned long long iValue2;
[pScanner scanHexLongLong: &iValue2];
NSLog(@"iValue2 = %lld", iValue2);
и наоборот, longlong to hex string...
NSNumber *number;
NSString *hexString;
number = [NSNumber numberWithLongLong:iValue2];
hexString = [NSString stringWithFormat:@"%qx", [number longLongValue]];
NSLog(@"hexString = %@", hexString);