我正在尝试将 NSString 对象转换为具有相同数值的 NSNumber。当我使用此语句创建 NSString 对象时...
NSString *songID = [localNotif.userInfo objectForKey:@"SongID"];
var songID
包含字符串值 @"10359537395704663785"
。当我尝试使用语句将其转换为 NSNumber 对象时...
NSNumber *songIDNumber = [NSNumber numberWithLongLong:[songID longLongValue]];
var songIDNumber
包含错误的值 9223372036854775807
我做错了什么?可能还值得注意的是,有时此代码确实可以工作并生成正确的 NSNumber 值,但大多数时候它会失败,如上所示。
在此先感谢您的帮助!
更新:天哪,我喜欢这个网站!感谢 unbeli 和 carl,我能够使用更新的代码修复它,将 NSString 转换为 NSNumber...
unsigned long long ullvalue = strtoull([songID UTF8String], NULL, 0);
NSNumber *songIDNumber = [NSNumber numberWithUnsignedLongLong:ullvalue];
最佳答案
longLongValue
returns LLONG_MAX
在溢出的情况下,LLONG_MAX
正是你得到的,9223372036854775807。你的值根本不适合 long long
尝试使用 NSDecimalNumber相反。
关于iphone - 为什么 NSNumber 类不能正确地将我的 NSString 对象转换为 long long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3622259/