objective-c - 将 NSString 转换为 unsigned long long 的问题

标签 objective-c ios

<分区>

Possible Duplicate:
Storing and retrieving unsigned long long value to/from NSString

尝试将 NSString 转换为 unsigned long long 时遇到问题。继承人的代码:

    NSString* mp3id = [[NSString alloc] initWithUTF8String:"16902439379132728577"];

    NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
    NSNumber* persistentId = [f numberFromString:mp3id];  

    unsigned long long test = [persistentId unsignedLongLongValue];
    NSLog(@"unsigned long long is %llu",test);
    [f release];

输出:

2011-07-09 15:28:06.834 NBUnityMP3Plugin[443:307] unsigned long long 是 16902439379132729344 2011-07-09 15:28:06.847 NBUnityMP3Plugin[443:307] 持久性 ID 为 1.690243937913273e+19

为了更清楚:

16902439379132728577 - input
16902439379132729344 - output

理想情况下,我希望将那个 unsigned long long 放入一个 NSNumber 变量中。我认为如果我只有一个 unsigned long long,那会很容易。

最佳答案

NSNumberFormatter 将 unsigned long long 表示为 float ,我认为在初始化 NSNumberFormatter 之后设置 [f setAllowsFloats:NO]; 可以解决问题。不过,它似乎并没有这样做(在尝试设置数字时返回 nil)。 16902439379132728577 可能太长,NSNumberFormatter 无法将其作为整数处理,并且它可能只能处理 long long 范围内的signed 整数。

关于objective-c - 将 NSString 转换为 unsigned long long 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6635063/

相关文章:

objective-c - 使用 UIToolBar 上的完成按钮关闭 UIPickerView

objective-c - NSMutableArray 中的错误

ios - 将 UITextField MM/YY 格式化为过期时间

ios - CoreData to-many 添加错误

android - 有没有办法检查 React Native 中的互联网连接质量(即 3g vs LTE)?

objective-c - Xcode - 在断言上调用堆栈跟踪?

iphone - 下载图片和UIButton BG图片

ios - 持久存储协调器核心数据错误:NSSQLiteErrorDomain = 522

android - 如何将混合应用程序构建为企业应用程序

ios - Swift 4 - 如何以编程方式在 UITabBarController 的 ViewController 之间切换