Спецификатор формата "x" предназначен для 32-битных чисел;вам нужно использовать либо «qx», либо «qX» (в зависимости от того, хотите ли вы, чтобы значения букв были в верхнем регистре или нет).Это средства форматирования для длинных значений без знака, см .:
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1
Далее, вы не должны передавать строку, как вы делали выше, непосредственно в NSLog - это может вызвать сбой.
NSLog(string); // bad!!
NSLog(@"%@", string); // good
Так что, если ваше значение представляет собой строку, вы захотите сделать это:
NSString *longNumber = @"1393443048683555706";
NSLog(@"%qx", [longNumber longLongValue]);
Если значение строки не может быть приведено к числу, longLongValue будетвернем 0. Я оставлю это вам, обработайте проверку ошибок (и границ) - подробности смотрите NSString .
Если вы хотите сохранить шестнадцатеричное значение в виде строки, выполнитеэто:
NSString *hexRepresentation = [NSString stringWithFormat:@"%qx", [longNumber longLongValue]];
Опять же, лучше всего позаботиться об обработке ошибок.