我正在创建一个随机数并将其存储在 NSNumber 对象中,如下所示:
NSNumber *index = [NSNumber numberWithUnsignedInt:arc4random_uniform(2^32-1)];
我也试过:
NSNumber *index = [NSNumber numberWithUnsignedInt:arc4random_uniform(4294967295)];
NSNumber *index = @(arc4random_uniform(4294967295));
在某些时候,我也会像这样分配数字 1:
NSNumber *index = @(1);
这应该只给我正数。
稍后,我打印出这些数字,如下所示:
NSString *string = [NSString stringWithFormat:@"%@", index];
这给了我一些随机数的负值,并且 1 被打印为 1。所以我可能会这样做:
NSString *string = [NSString stringWithFormat:@"%u", index.unsignedIntValue];
我只会得到正数 - 我会 - 但现在 1 也突然被打印为一些大的正数。
这里发生了什么?如何在 NSNmber 中正确存储 u_int32 (arc4random 返回的)并确保它们只是正数?