连接两个32位int以在Python中获得64位长

Con*_*ion 6 python math timestamp bit-manipulation uniqueidentifier

我想生成64位长的int作为文档的唯一ID.

一种想法是将用户的ID(32位int)与Unix时间戳(另一个32位int)组合,以形成唯一的64位长整数.

缩小的例子是:

组合两个4位数字00100101形成8位数字00100101.

  1. 这个方案有意义吗?
  2. 如果是这样,我如何在Python中进行数字的"连接"?

syk*_*ora 16

留在所述第二数量的比特数移位所述第一数目,然后添加(或按位或-取代+|在以下实施例)第二个数字.

result = (user_id << 32) + timestamp
Run Code Online (Sandbox Code Playgroud)

关于缩小的例子,

>>> x = 0b0010
>>> y = 0b0101
>>> (x << 4) + y
37
>>> 0b00100101
37
>>>
Run Code Online (Sandbox Code Playgroud)

  • 你不能用| 在这个例子中代替+? (5认同)

Amb*_*ber 5

foo = <some int>
bar = <some int>

foobar = (foo << 32) + bar
Run Code Online (Sandbox Code Playgroud)