如何在python中创建一个六进制随机数?
我想创建一个十六进制数的文件,其中每个人都由32个元素组成,如下所示:如何在python中创建一个六进制随机数?,python,random,Python,Random,我想创建一个十六进制数的文件,其中每个人都由32个元素组成,如下所示: ccddeeff8899aabb4455667fffffff33 e0370734313198a2885a308aaaaaaaa8 7354776f204f6e65204e696bbbbbbb6f 64976fbb4f6e6ee0cc681e6ccccccc77 我尝试使用此代码创建数字,但现在不知道如何为每个数字指定32个元素: import random Plaintext_file = open("C:\
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
如果你能帮忙,我将非常感激 用于将二进制数据转换为ASCII字符行
>>> import uuid
>>> uuid.uuid4().hex
'd734fde6d45e47e99d06f129b5c128f8'
>>> import os,binascii
>>> binascii.b2a_hex(os.urandom(16))
'a8922d48fba3bddd0214a338ce090ea6'
从操作系统特定的随机性源返回一个由n
随机字节组成的字符串。用于将二进制数据转换为一行ASCII字符
>>> import os,binascii
>>> binascii.b2a_hex(os.urandom(16))
'a8922d48fba3bddd0214a338ce090ea6'
从操作系统特定的随机性源返回一个由
n
随机字节组成的字符串。您可以使用random。使用接受的十六进制字符列表(从string.hexdigits
)选择
:
如果只需要小写字母,请使用string.hexdigits[:16]
:
>>> import string
>>> string.hexdigits[:16]
'0123456789abcdef'
>>> import random
>>> "".join([random.choice(string.hexdigits[:16]) for x in range(32)])
'805cb6c9b38515b588bfec42613eff9d'
您可以使用接受的十六进制字符列表(从
string.hexdigits
)使用random.choice
:
如果只需要小写字母,请使用string.hexdigits[:16]
:
>>> import string
>>> string.hexdigits[:16]
'0123456789abcdef'
>>> import random
>>> "".join([random.choice(string.hexdigits[:16]) for x in range(32)])
'805cb6c9b38515b588bfec42613eff9d'
16777215来自哪里?它不是16**32。i=random。randint(0,16**32)不给我32个元素,有时它给我31个元素,因为第一个数字是时间的0 1/16。(使用
“%032x”
强制宽度为32,填充为零)。不,对不起,它不起作用。我仍然有同样的问题16777215来自哪里?它不是16**32。i=random。randint(0,16**32)不给我32个元素,有时它给我31个元素,因为第一个数字是时间的0 1/16。(使用“%032x”
强制宽度为32,零填充)。不,我很抱歉,它不起作用。我仍然有相同的问题。它起作用,但我需要返回到纯文本文件行。写入(“\n”%I)这个文件不起作用。写入(“%s\n”%uuid.uuid4().hex)它起作用,但我需要返回到纯文本文件行。写入(“\n”%I)这一个不工作于INTEXT_文件。写入(“%s\n”%uuid.uuid4().hex)@nani92,您检查过这段代码吗?我不太确定到底是什么/哪里出了问题。使用“0123456789ABCDEFABCDDEF”会增加选择a..f范围内十六进制数字的几率。如果结果中的大小写很重要,则最好使用“01234567890123456789ABCDEFABCDDEF”。@nani92,您是否检查了此代码?我不太确定到底是什么/哪里出了问题。使用“0123456789ABCDEFABCDDEF”会增加选择a..f范围内十六进制数字的几率。如果结果中的大小写重要,则最好使用“01234567890123456789ABCDEFABCDDEF”。