簡體   English   中英

iOS Obj-C等效於JavaScript的toString(16)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM