我想创建一个十六进制数的文件,其中每个人都由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
如果你能提供帮助,我将非常感激。
答案 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'