3

16 進数の範囲間でランダムな 16 進数値を取得しようとしています。

random.randint(0xfff000, 0xffffff)

JSON から範囲制限を文字列として取得しました。

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

これらの文字列 (分割後) を 16 進数値に変換するにはどうすればよいですか?

4

2 に答える 2

9

のベースで組み込みint()関数を使用し16ます。

>>> int('0xfff000', 16)
16773120
>>> int('0xfff000', 16) == 0xfff000
True
于 2013-06-18T17:39:28.260 に答える
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]
于 2013-06-18T17:42:13.753 に答える