2017-09-26 22 views
0

私は、この読み取り:(それはdef make_idから生成されています)idtuを取得する方法、DEF以上から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 

を?

def get_t(id): 
    some methods 
    return t 

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

を設定します。なぜあなたはしたいですか? –

+0

@DanielRosemanなぜあなたはできませんか?シフティングとORによって作成されましたが、シフトとマスキングで元に戻すことができます。 – Barmar

+0

さて、明らかに、それらの機能とは逆の機能を書くことができますが、OPは既存の機能の中の実際の変数にアクセスしたいようです。 –

答えて

1

のようにちょうど右シフトと左シフトを元に戻す、tを取得します。

def get_t(id): 
    return id >> 23 

右端の23ビットとビットマスクを使用し、uを取得するには、あなたがすることはできません

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

ありがとうございますBarmar – touchingtwist

関連する問題