2017-09-26 45 views
0

我讀這個:https://stackoverflow.com/a/37605582/6426449如何從這個功能獲得具體的價值?

START_TIME = a constant that represents a unix timestamp 

def make_id(): 

    t = int(time.time()*1000) - START_TIME 
    u = random.SystemRandom().getrandbits(23) 
    id = (t << 23) | u 

    return id 

def reverse_id(id): 
    t = id >> 23 
    return t + START_TIME 

從上面閃避,如何獲得tidu(這是一個從def make_id產生的)?

def get_t(id): 
    some methods 
    return t 

def get_u(id): 
    some methods 
    return u 
+1

你不能。你爲什麼想要? –

+0

@DanielRoseman你爲什麼不能?它是通過移動和ORing創建的,您可以通過移動和遮罩來撤消它。 – Barmar

+0

好吧,顯然你可以寫一個函數來做與它們相反的功能,但是OP似乎想要訪問現有函數中的實際變量。 –

回答

1

要獲得t,只要撤銷與右移左移。

def get_t(id): 
    return id >> 23 

要獲得u,使用位掩碼與最右邊的23位設置

def get_u(id): 
    return id & 0x7fffff 
+0

ThankYou Barmar – touchingtwist