嘿傢伙我試圖產生一個隨機的6字節長的十六進制,但我有問題。我得到的錯誤是:「整數文字存儲到'UInt32'時溢出」。如何在Swift中生成隨機長十六進制?
這裏是我的代碼:
var baseInt = UInt64(arc4random() % 281474976710655)
var str = String(format: "%06X", baseInt)
println("\(str)")
任何幫助嗎?
嘿傢伙我試圖產生一個隨機的6字節長的十六進制,但我有問題。我得到的錯誤是:「整數文字存儲到'UInt32'時溢出」。如何在Swift中生成隨機長十六進制?
這裏是我的代碼:
var baseInt = UInt64(arc4random() % 281474976710655)
var str = String(format: "%06X", baseInt)
println("\(str)")
任何幫助嗎?
正在關注@Amadan的建議我明白了。
var baseIntA = Int(arc4random() % 65535)
var baseIntB = Int(arc4random() % 65535)
var str = String(format: "%06X%06X", baseIntA, baseIntB)
println("\(str)")
然後輸出:「009DD7004974
你應該避免使用arc4random() –
你會建議什麼? –
let baseIntA = Int(arc4random_uniform(UInt32(UInt16.max))) –
'arc4random'是32位將三個16位的號碼,並將其粘貼在一起 – Amadan
感謝@Amadan但代碼與較低的整數,我測試了它? ,但是沒有我需要的那麼長的一個,所以我必須使用該代碼,只需要擺脫那個我不知道如何的錯誤。 –
再次,['arc4random'](https://developer.apple .com/library/mac/documentation/Darwin/Reference/ManPages/man3/arc4random.3.html)生成32位數字,你可以先將'arc4random()'結果升級到'UInt64' *然後*得到一個模,但你總會得到像'00XXXX'這樣的數字,只是因爲沒有足夠的位在'arc4random'的結果給你你想要的。這就像問:「我如何以每天200卡路里的速度生存下來?我可以做一個小時,所以我只需要讓它在更長的時間內工作,但我不知道如何。」 – Amadan