使用Python 2.7我有这个代码:
#Create a random 56 bit (7 byte) string
random_bytes = os.urandom(7)
random_bytes = int.from_bytes(random_bytes, byteorder="big")
出现错误:
AttributeError:type object'int'没有属性'from_bytes'
在线阅读后,from_bytes
看起来像是Python 3.所以我尝试了以下内容:
random_bytes = os.urandom(7)
#random_bytes = int.from_bytes(random_bytes, byteorder="big")
random_bytes = struct.unpack('>16B', random_bytes)
但这会产生以下错误:
struct.error:unpack需要一个长度为16的字符串参数
>16B
应>7B
吗?即使这样,它似乎也会返回一个元组。
目标是像这样使用random_bytes
:
int(str(((time_bytes << 56) | random_bytes)) + code)
答案 0 :(得分:2)
也许这会有所帮助:
import os
binary = os.urandom(7)
result = int(binary.encode('hex'), 16)
答案 1 :(得分:1)
也许这对你有用:
r = chr(0) + os.urandom(7) # pad with zeroes
struct.unpack('>q', r)
q
是有符号8字节整数的代码(Q
是无符号的)。
结果是一个元素的元组。