如何在目标 C 中将 NSInteger 值转换为 int 值? [复制]

Posted

技术标签:

【中文标题】如何在目标 C 中将 NSInteger 值转换为 int 值? [复制]【英文标题】:How do I convert NSUInteger value to int value in objectiveC? [duplicate] 【发布时间】:2013-05-05 02:46:56 【问题描述】:

如何在objectiveC中将NSUInteger值转换为int值?

还有如何在 NSLog 中打印 NSUInteger 值,我试过 %@,%d,%lu 这些都不起作用并抛出 Ex-Bad Access 错误。

谢谢

【问题讨论】:

这是%lu,而不是@lu 【参考方案1】:

您好,它为我工作...

我试过这个..

NSUInteger  inbox_count=9;
NSLog(@"inbox_count=%d",(int)inbox_count);

//output   
inbox_count=9

谢谢大家..

【讨论】:

坏主意。在 OSX 上,NSUInteger 很长。因此,转换为 int 会溢出较大的值。对于 ios 来说可能没问题,但最好习惯以一种不会破坏其他版本的方式来做。 @SteveWaddicor 当您的收件箱包含超过 20 亿封邮件时,您还有其他问题。 这种情况的细节不是***答案的限制。其他人可能会尝试将损坏的代码应用于可以变得那么大的数字。做对更好,做错也不容易。 @SteveWaddicor 我完全同意。正是这个案子的细节让我开了这个小玩笑。【参考方案2】:

就这么简单,

NSUInteger uintV = 890;
int intVal = (int) uintV;
NSLog(@"the value is : %lu", (unsigned long)intVal);

这将打印出类似这样的内容,值为:890

【讨论】:

请解释否决票...【参考方案3】:
NSUInteger intVal = 10;
int iInt1 = (int)intVal;
NSLog(@"value : %lu %d", (unsigned long)intVal, iInt1);

更多参考,请看here

【讨论】:

Apple 的文档(您的链接)明确声明“将值转换为无符号长整数”。为NSUInteger。所以最后一行应该是NSLog(@"the value is : %lu %d", (unsigned long)intVal, iInt1); @NikolaiRuhe 感谢指出我的错误,我已经更新了我的答案【参考方案4】:

显式转换为 int

NSUInteger foo = 23;
int bar = (int)foo;

虽然

NSLog(@"%lu",foo);

在当前的 OSX 版本上可以正常工作。这是不安全的,因为 NSUInteger 在其他版本中被定义为 unsigned int 。比如iOS。严格的答案是先投射:

NSLog(@"%lu",(unsigned long)foo);

【讨论】:

以上是关于如何在目标 C 中将 NSInteger 值转换为 int 值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在目标c中将gps北和gps西转换为纬度/经度

如何在objective-c中将字节值转换为int

如何在目标 c 中将 NSString 转换为 NSDictionary?

如何在目标 C 中将字符串转换为整数? [复制]

如何在目标c中将类对象转换为json字符串

如何在iOS中将字符串转换为xml? (目标 C,xcode 7.2)