在 32 位 iPhone 上处理 64 位整数
Posted
技术标签:
【中文标题】在 32 位 iPhone 上处理 64 位整数【英文标题】:Handling 64 bit integers on a 32 bit iPhone 【发布时间】:2014-07-28 12:43:02 【问题描述】:我想在 iPhone 4s(当然有 32 位 ARM 6 处理器)上处理 64 位无符号整数。
当尝试使用 64 位无符号整数时,例如Twitter ID,我有以下问题:
// 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;
数组Ids
包含以下数字(= Tweet Id):
491621469123018752,
491621468917477377,
491621465544851456,
491621445655867393
但是,minId
返回的 399999248
值不正确(而不是 491621445655867393
)
如何在 iPhone 4s 上找到 64 位整数数组中的最小值或最后一个对象?
【问题讨论】:
【参考方案1】:您需要使用始终为 64 位的类型,而不是 NSUInteger
。您可以使用uint64_t
或unsigned long long
。您还需要从 NSNumber 中获取整数值(数组不能存储 C 类型)。为此,您需要调用
uint64_t minID = [Ids.lastObject longLongValue];
编辑
在示例代码中更改为使用 uint64_t,因为它已被正确指出,这更好地显示了您的意图。
【讨论】:
我会使用uint64_t
来表示您特别想要 64 位数据类型。以上是关于在 32 位 iPhone 上处理 64 位整数的主要内容,如果未能解决你的问题,请参考以下文章