[英]iOS Obj-C Equivalent to JavaScript's toString(16)
我正在尝试从随机数生成十六进制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个字符)的字符串。
您可以使用以下代码在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位六进制十进制值
我找到了解决方案:
#define cPow pow(3, 19)
long long val = ((
rand() * cPow +
rand() * cPow +
rand() * cPow +
rand() * cPow
));
NSString *newId = [[NSString alloc] initWithFormat:@"%llx", val];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.