2014-02-19 57 views
0

我希望能夠在Objective-C中生成一個介於01-30之間的隨機數作爲uint8_t。隨機uint8_t號碼

因此,例如,它會像任何如下:

uint8_t randomNumber1 = 0x13; 
uint8_t randomNumber2 = 0x04; 
uint8_t randomNumber3 = 0x22; 

我怎麼會去這樣做呢?

謝謝!

回答

1

由於0x22(來自例如)大於30(基-10)中,我將假設你的上限是0x30 。在這種情況下,

uint8_t random = arc4random_uniform(0x30) + 1; 
+0

謝謝沃倫。正如我在下面提到Vladimir時,我應該在我的問題中提到,我需要將數字保留爲0X13,或0X22或0X04,與'\ x18'相反,因爲它在調試器日誌中顯示我。有關如何完成這項工作的任何建議?謝謝 – Teddy13

+0

這只是調試器如何呈現它的一個神器。你問如何打印格式爲十六進制數字的值? – warrenm

+0

啊,我的錯誤。我感謝你的幫助,將接受! – Teddy13

1

可以使用arc4random_uniform函數在給定的時間間隔,以產生隨機數:

uint8_t randomNumber1 = (uint8_t)arc4random_uniform(30) + 1; 
+0

感謝弗拉基米爾,我應該在我的問題已經提到,我需要的數量保持爲0×13,或爲0x22或0X04反對像「\ X18」,因爲它顯示我在調試器登錄。有關如何完成這項工作的任何建議?謝謝 – Teddy13

+0

這只是一個調試器默認顯示uint8_t變量的方式。如果你想以不同的方式打印,你可以在NSLog中使用自定義格式字符串。或者如果你想改變調試器的默認行爲,你可以看看lldb scripting api – Vladimir