我有一个 unsigned long long 值,我想将其存储到 NSString 中并从字符串中检索。
最初我在 NSNumber 中有值,我用它来获取字符串
NSString *numStr = [NSString stringWithFormat:@"%llu", [myNum unsignedLongLongValue]];
其中 myNum 是一个 NSNumber。
要从 NSString 取回 NSNumber,我必须首先获取 unsigned long long 值。但是 NSString 类中没有方法可以做到这一点(我们只有一个方法可以获取 long long 值,而不是 unsigned long long 值)。
谁能告诉我如何将值返回到 NSNumber 变量中。
谢谢。
最佳答案
有很多方法可以做到这一点。以下是最实用的:
NSString *numStr = [NSString stringWithFormat:@"%llu", [myNum unsignedLongLongValue]];
// .. code and time in between when numStr was created
// .. and now needs to be converted back to a long long.
// .. Therefore, numStr used below does not imply the same numStr above.
unsigned long long ullvalue = strtoull([numStr UTF8String], NULL, 0);
这做出了一些合理的假设,例如 numStr
将只包含数字,并且它包含一个“有效”的 unsigned long long 值。这种方法的缺点是 UTF8String
创建的内容实际上等于 [[numStr dataUsingEncoding:NSUTF8StringEncoding] bytes]
,或者换句话说,类似于 32 字节的自动释放每次调用的内存。对于绝大多数用途,这根本不是问题。
有关如何将类似 unsignedLongLongValue
的内容添加到 NSString
的示例,它既非常快又不使用自动释放的内存作为副作用,请查看结尾我对 this SO question 的(长)回答.特别是 rklIntValue
的示例实现,它只需要简单的修改即可实现 unsignedLongLongValue
。
有关 strtoull
的更多信息可以在其手册页中找到。
关于objective-c - 在 NSString 中存储和检索 unsigned long long 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1181637/