iOS Obj-C相当于JavaScript的toString(16)

时间:2014-09-16 09:19:45

标签: javascript ios objective-c math random

我正在尝试从随机数生成十六进制id字符串。在JavaScript中我做:

var id = ( Math.random() * Math.pow(10, 17) + Math.random() * Math.pow(10, 17) + Math.random() * Math.pow(10, 17) + Math.random() * Math.pow(10, 17) ).toString(16);

结果是一个随机ID,如:“2d50e9b4835d7e0”。

是否有人知道iOS中的类似方法可以用来做同样的事情?我希望iOS调用的结果返回一个相同长度的字符串(15个字符)。

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码

在Objective C中获取随机数
-(int)getRandomNumberBetween:(int)from to:(int)to {

    return (int)from + arc4random() % (to-from+1);
}

编辑我更改了此方法以获取十六进制字符串

- (NSString *)getHexString
{   
    NSString *longlongstr = [NSString stringWithFormat:@"%d%d%d%d%d%d",[self getRandomNumberBetween:100 to:999],[self getRandomNumberBetween:100 to:999],[self getRandomNumberBetween:100 to:999],[self getRandomNumberBetween:100 to:999],[self getRandomNumberBetween:100 to:999],[self getRandomNumberBetween:100 to:999]];
    long long longnumber = [longlongstr longLongValue];
    NSString *hexStr =  [NSString stringWithFormat:@"%llx",longnumber];
    NSLog(@"%@",hexStr);
     return hexStr;

}

所以你的代码看起来像

NSString *hexStr = [self getHexString];

您可以根据需要对其进行修改,它会为您提供15位六进制十进制值

答案 1 :(得分:0)

我找到了解决方法:

#define cPow pow(3, 19)

long long val = ((
    rand() * cPow +
    rand() * cPow +
    rand() * cPow +
    rand() * cPow
));

NSString *newId = [[NSString alloc] initWithFormat:@"%llx", val];