私は以下の方法でランダムな文字列を生成しました(今はthis methodに切り替えました)。16進数の文字列をPythonに変換する
key = '%016x' % random.getrandbits(128)
このように生成されたキーは、多くの場合32文字の文字列ですが、31文字が得られます。
これは私が得るものではありません:なぜそれは32の文字ではなく、16ですか? 1桁の16進数字は1文字で印刷できませんか?
だから私が%016x
を求めるなら、先頭に0をつけて16文字を期待してはいけませんか?
なぜ文字列legthは常に同じではありませんか?
テストケース
import random
import collections
stats = collections.defaultdict(int)
for i in range(1000000):
key = '%016x' % random.getrandbits(128)
length = len(key)
stats[length] += 1
for key in stats:
print key, ' ', stats[key]
プリント:
32 937911
27 1
28 9
29 221
30 3735
31 58123