7

我的应用程序收到一个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];

unsigned int由于我必须将其转换为第一个,因此上述内容是否可能会“切断”一个大的结尾NSInteger?或者看起来可以使用吗?如果它会切断它的结尾,那么下面的(我认为有点混乱)怎么样?

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];

谢谢你的尽心帮助!:)

4

1 回答 1

8

第一个版本会截断,第二个版本应该没问题,只要您的数字实际上适合 unsigned int - 请参见例如“数据类型大小和对齐”
但是,您应该创建NSNumberusing +numberWithUnsignedInt

如果您知道编码是合适的,您也可以简单地使用 C 库:

unsigned n;
sscanf([str UTF8String], "%u", &n);
于 2010-05-13T03:25:01.600 回答