Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS Obj-C相当于JavaScript的toString(16)_Javascript_Ios_Objective C_Math_Random - Fatal编程技术网

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

iOS Obj-C相当于JavaScript的toString(16),javascript,ios,objective-c,math,random,Javascript,Ios,Objective C,Math,Random,我试图从一个随机数生成一个十六进制id字符串。在JavaScript中,我会: 变量id= Math.random*Math.pow10,17+ Math.random*Math.pow10,17+ Math.random*Math.pow10,17+ Math.random*Math.pow10,17 .toString16 结果是一个随机id,如:2d50e9b4835d7e0 有人知道iOS中有类似的方法可以用来做同样的事情吗?我希望iOS调用的结果返回长度相同的字符串15个字符。您可以使

我试图从一个随机数生成一个十六进制id字符串。在JavaScript中,我会:

变量id= Math.random*Math.pow10,17+ Math.random*Math.pow10,17+ Math.random*Math.pow10,17+ Math.random*Math.pow10,17 .toString16

结果是一个随机id,如:2d50e9b4835d7e0


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

您可以使用以下代码在目标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位十六进制值

我找到了一个解决方案:

#define cPow pow(3, 19)

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

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

此操作的输出似乎不会生成任何包含字母的内容,只生成一个表示为字符串的数字。这里有一个运行后的示例:@31333832。很抱歉,我修改了我的答案,请检查并让我知道它是否有效。嗯,这肯定会增加一些字母字符,但不多,生成的每个数字似乎也以几个零结尾。