2012-06-21 34 views
1

我需要生成一些象徵性的,只能採取一個字符範圍,[a-zA-Z0-9_]的/ dev/urandom的範圍

我試圖用binascii.b2a_base64(os.urandom(64))工作,其中有諸如+其他字符,並導致問題。

/dev/urandom(我在linux上)的範圍是什麼,這樣我就可以將輸出整數映射到一個統一的值。

回答

4

它生成字節,所以0x00到0xFF(含)。

+0

好吧。我跑了測試,但我只是想確定。現在,我必須將62個字符統一放入256個數字中。 – Pwnna

+0

我會進一步限制範圍,以便在字符數和256之間獲得較低的LCM。 –

+2

除以4和[重滾63的](http:/ /en.wikipedia.org/wiki/Rejection_sampling)? –

1

/dev/urandom只是提供隨機字節。您讀取的每個字節在範圍0255之間,希望均勻分佈。

處理當前問題的一種簡單方法是過濾出+=字符。在shell中它將是... | tr -d += | ...。我不知道最Pythonic的方法,但這似乎工作:

>>> import re 
>>> re.sub(r'\+|=', '', "abcdef+=") 
'abcdef'