def uuid_with_timestamp(microseconds, lowest_val=False, randomize=False):
ts = int(microseconds * 10) + long(0x01b21dd213814000)
time_low = ts & long(0xffffffff)
time_mid = (ts >> 32) & long(0xffff)
time_hi_version = (ts >> long(48)) & long(0x0fff)
if randomize:
cs = random.randrange(1 << long(14))
clock_seq_low = cs & long(0xff)
clock_seq_hi_variant = (cs >> long(8)) & long(0x3f)
node = uuid.getnode()
else:
if lowest_val: # uuid with lowest possible clock value
clock_seq_low = 0 & long(0xff)
clock_seq_hi_variant = 0 & long(0x3f)
node = 0 & long(0xffffffffffff) # 48 bits
else: # UUID with highest possible clock value
clock_seq_low = long(0xff)
clock_seq_hi_variant = long(0x3f)
node = long(0xffffffffffff) # 48 bits
return uuid.UUID(
fields=(time_low, time_mid, time_hi_version,
clock_seq_hi_variant, clock_seq_low, node),
version=1
)
评论列表
文章目录