I have an unsigned long long value which I want to store into an NSString and retrieve from the string.
Initially I have the value in an NSNumber and I am using this to get the string
NSString *numStr = [NSString stringWithFormat:@"%llu", [myNum unsignedLongLongValue]];
where myNum is an NSNumber.
To get back the NSNumber from the NSString I have to first get the unsigned long long value. But there is no method in the NSString class to do that (we just have one for getting the long long value, not the unsigned long long value).
Can someone please tell me how I can get back the value into an NSNumber variable.
Thanks.
There are a lot of ways to accomplish this. The following is the most pragmatic:
This makes a few reasonable assumptions such as
numStr
will only contain numeric digits and it contains a 'valid' unsigned long long value. A drawback to this approach is thatUTF8String
creates what essentially amounts to[[numStr dataUsingEncoding:NSUTF8StringEncoding] bytes]
, or in other words something along the lines of 32 bytes of autoreleased memory per call. For the vast majority of uses, this is no problem what-so-ever.For an example of how to add something like
unsignedLongLongValue
toNSString
that is both very fast and uses no autoreleased memory as a side effect, take a look at the end of my (long) answer to this SO question. Specifically the example implementation ofrklIntValue
, which would require only trivial modifications to implementunsignedLongLongValue
.More information regarding
strtoull
can be found in its man page.