Dav*_*her 7 cocoa unsigned objective-c nsstring
我的申请被交给一个NSString包含unsigned int.NSString没有[myString unsignedIntegerValue];方法.我希望能够从字符串中取出值而不将其修改,然后将其置于一个NSNumber.我试着这样做:
NSString *myUnsignedIntString = [self someMethodReturningAString];
NSInteger myInteger = [myUnsignedIntString integerValue];
NSNumber *myNSNumber = [NSNumber numberWithInteger:myInteger];
// ...put |myNumber| in an NSDictionary, time passes, pull it out later on...
unsigned int myUnsignedInt = [myNSNumber unsignedIntValue];
Run Code Online (Sandbox Code Playgroud)
上面有可能"切断"大片的结尾,unsigned int因为我必须把它转换成NSInteger第一个吗?或者看起来好用吗?如果它会切断它的结尾,那么下面的内容(我认为有点像kludge)?
NSString *myUnsignedIntString = [self someMethodReturningAString];
long long myLongLong = [myUnsignedIntString longLongValue];
NSNumber *myNSNumber = [NSNumber numberWithLongLong:myLongLong];
// ...put |myNumber| in an NSDictionary, time passes, pull it out later on...
unsigned int myUnsignedInt = [myNSNumber unsignedIntValue];
Run Code Online (Sandbox Code Playgroud)
谢谢你尽你所能的帮助!:)
第一个版本截断,第二个版本应该没问题,只要你的数字实际上适合无符号整数 - 参见例如"数据类型大小和对齐".
但是你应该创建NSNumber使用+numberWithUnsignedInt.
如果你知道编码是合适的,你也可以简单地使用C库:
unsigned n;
sscanf([str UTF8String], "%u", &n);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7260 次 |
| 最近记录: |