如何在python中创建一个随机数的六进制数?

时间:2016-12-07 14:32:50

标签: python random

我想创建一个十六进制数的文件,其中每个人都由32个元素组成:

ccddeeff8899aabb4455667fffffff33
e0370734313198a2885a308aaaaaaaa8
7354776f204f6e65204e696bbbbbbb6f
64976fbb4f6e6ee0cc681e6ccccccc77

我尝试使用此代码创建我的数字,但我现在不知道如何为每个数字添加32个元素:

   import random
   Plaintext_file = open("C:\\Users\\user\\Plaintexts.txt", "w")
   for i in range(5):
      i = random.randint(0, 16777215)
      print "%x" % i 
      Plaintext_file.write("%x \n" % i)

我的结果是:

c39ea9
a737a0
d2d352
fcebf1
ade761

如果你能提供帮助,我将非常感激。

3 个答案:

答案 0 :(得分:2)

使用binascii.b2a_hex将二进制数据转换为ASCII字符行,

>>> import os,binascii
>>> binascii.b2a_hex(os.urandom(16))
'a8922d48fba3bddd0214a338ce090ea6'

os.urandom(n)从特定于操作系统的随机源返回一串n个随机字节。

答案 1 :(得分:1)

>>> import uuid
>>> uuid.uuid4().hex
'd734fde6d45e47e99d06f129b5c128f8'

答案 2 :(得分:1)

您可以使用random.choice使用已接受的十六​​进制字符列表(来自string.hexdigits):

>>> import string
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> import random
>>> "".join([random.choice(string.hexdigits) for x in range(32)])
'37bAA921dd6BE09eEff45c280D62FFAb'

如果您只想使用小写字母,请使用string.hexdigits[:16]

>>> import string
>>> string.hexdigits[:16]
'0123456789abcdef'
>>> import random
>>> "".join([random.choice(string.hexdigits[:16]) for x in range(32)])
'805cb6c9b38515b588bfec42613eff9d'