Если базовое значение 16 является константой или хранится в переменной, будет работать простое приведение.
long long llint1 = (long long int)0x5d0cfa30041d4348;
long long llint2 = (long long int)0x024025978b5e50d2;
long long llint3 = (long long int)0xfb115bd6d34a8e9f;
NSLog(@"\n%lld\n%lld\n%lld", llint1, llint2, llint3);
Если значение является строкой, его сначала нужно будет отсканировать.
unsigned long long tmp;
NSScanner *nscanner = [NSScanner scannerWithString:@"0x5d0cfa30041d4348"];
[nscanner scanHexLongLong:&tmp];
llint1 = (long long int)tmp;
nscanner = [NSScanner scannerWithString:@"0x024025978b5e50d2"];
[nscanner scanHexLongLong:&tmp];
llint2 = (long long int)tmp;
nscanner = [NSScanner scannerWithString:@"0xfb115bd6d34a8e9f"];
[nscanner scanHexLongLong:&tmp];
llint3 = (long long int)tmp;
NSLog(@"\n%lld\n%lld\n%lld", llint1, llint2, llint3);
Примечание: scanHexLongLong
и другие методы сканирования возвращают BOOL, независимо от того, было ли сканирование успешным. При работе со строками лучше всего проверить, что сканирование прошло успешно.