我读到了这个:https://stackoverflow.com/a/37605582/6426449
此部分发生错误
START_TIME = time.time() #at some time
def make_id():
t = int(time.time()*1000) - START_TIME
u = random.SystemRandom().getrandbits(23)
id = (t << 23 ) | u #This part has problem
return id
unsupported operand type(s) for <<
我无法使用此操作<<
?
或者如何使用<<
?
答案 0 :(得分:3)
使t
成为整数,请注意括号:
t = int(time.time()*1000 - START_TIME)
您的版本:
t = int(time.time()*1000) - START_TIME
使t
成为浮点数,因为START_TIME
是浮点数。
答案 1 :(得分:2)
似乎这一行
t = int(time.time()*1000) - START_TIME
将t
强制转换为浮点数(我猜因为START_TIME
是浮点数)。但是,您不能将按位移位应用于浮点数,因此请尝试使用
import time
import random
START_TIME = time.time() #at some time
def make_id():
t = int(time.time()*1000) - START_TIME
u = random.SystemRandom().getrandbits(23)
id = (int(t) << 23 ) | u #Note the explicit INT() here
return id
print(make_id())