Me gustaría manejar los integers sin signo de 64 bits en un iPhone 4s (que por supuesto tiene un procesador ARM 6 de 32 bits).
Al intentar trabajar con integers sin signo de 64 bits, por ejemplo, ID de Twitter, tengo el siguiente problema:
// Array holding the 64 bit integer IDs of the Tweets in a timeline: NSArray *Ids =[timelineData valueForKeyPath:@"id"]; // I would like to get the minimum of these IDs: NSUInteger minId = (NSUInteger) Ids.lastObject;
Los Ids
matriz contienen los siguientes numbers (= Id. De Tweet):
491621469123018752, 491621468917477377, 491621465544851456, 491621445655867393
Sin embargo, minId
devuelve el valor incorrecto de 399999248
(en lugar de 491621445655867393
)
¿Cómo puedo encontrar el mínimo o el último object en una matriz de integers de 64 bits en un iPhone 4s?
NSUInteger
usar un tipo que siempre sea de 64 bits en lugar de NSUInteger
. Puede usar uint64_t
o unsigned long long
. También necesita get el valor integer del NSNumber (las matrices no pueden almacenar los types C). para hacer esto debes llamar
uint64_t minID = [Ids.lastObject longLongValue];
Cambiado para usar uint64_t en el código de ejemplo, ya que se ha señalado correctamente, esto muestra su intención mejor.