2013-06-18 141 views
3

我試圖讓吉利的東西的範圍之間的隨機十六進制值:Python的JSON字符串(包含十六進制),以HEX

random.randint(0xfff000, 0xffffff)

我從JSON範圍限制,作爲一個字符串。

{"range": "0xfff000,0xffffff"}

我怎樣才能將這些字符串轉換(後分裂)爲十六進制值?

+0

不是e「值」既不是十進制也不是二進制也不是十六進制。它只是表示,例如字符串,它們都具有地位價值。 – jpaugh

回答

7

使用內置int()功能與16基地:

>>> int('0xfff000', 16) 
16773120 
>>> int('0xfff000', 16) == 0xfff000 
True 
+0

+1,我從來不知道'int'接受的字符串就是這樣的前綴。 – Blender

+0

是的,我不得不再次檢查它,正準備寫一個首先將「0x」關閉的答案,但它不是必需的。 –

3

您可以利用以下幾點:

from random import randint 

d = {"range": "0xfff000,0xffffff"} 
print randint(*(int(i, 16) for i in d['range'].split(','))) 
# 16775837 

,然後展開定製自己隨機整數功能,例如:

from random import randint 
from functools import partial 

d = {"range": "0xfff000,0xffffff"} 
my_random = partial(randint, *(int(i, 16) for i in d['range'].split(','))) 
print [my_random() for n in range(5)] 
# [16776381, 16774349, 16776922, 16773212, 16775873] 
相關問題