此代码曾用于py2。在py3中,我得到了这个:
以下是代码:
from Crypto import Random
import os
def generate_random_bytes(length):
return Random.get_random_bytes(length)
#return bytearray(os.urandom(length)) I tried this line but got the same result
def generate_server_id():
"""Generates 20 random hex characters"""
print(generate_random_bytes(10))
print(ord(c) for c in generate_random_bytes(10))
return "".join("%02x" % ord(c) for c in generate_random_bytes(10))
答案 0 :(得分:1)
只需将ord(c)
替换为c
,在Py3中,字节数组项已经是整数而不是字符,因此您不需要转换。
您可能希望像这样重写它,以使其适用于两个版本:
def generate_server_id():
"""Generates 20 random hex characters"""
try:
return "".join("%02x" % ord(c) for c in generate_random_bytes(10))
except TypeError:
return "".join("%02x" % c for c in generate_random_bytes(10))