在 Python 中连接两个 32 位 int 以获得 64 位 long
我想生成 64 位长的 int 作为文档的唯一 ID。
一种想法是将用户 ID(一个 32 位 int)与 Unix 时间戳(另一个 32 位 int)组合起来,形成一个唯一的 64 位长整数。
一个按比例缩小的示例是:
将两个 4 位数字 0010
和 0101
组合起来形成 8 位数字 00100101
。
- 这个方案有意义吗?
- 如果是这样,我该如何在Python中进行数字的“串联”?
I want to generate 64 bits long int to serve as unique ID's for documents.
One idea is to combine the user's ID, which is a 32 bit int, with the Unix timestamp, which is another 32 bits int, to form an unique 64 bits long integer.
A scaled-down example would be:
Combine two 4-bit numbers 0010
and 0101
to form the 8-bit number 00100101
.
- Does this scheme make sense?
- If it does, how do I do the "concatenation" of numbers in Python?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
将第一个数字左移第二个数字中的位数,然后添加(或按位或 - 在以下示例中将
+
替换为|
)第二个数字。关于你缩小的例子,
Left shift the first number by the number of bits in the second number, then add (or bitwise OR - replace
+
with|
in the following examples) the second number.With respect to your scaled-down example,
这应该可以做到:
This should do it:
对于下一个人(在这种情况下就是我)。一般来说,这是一种方法(对于缩小的示例):
对于其他尺寸,将 4 更改为 32 或其他。
For the next guy (which was me in this case was me). Here is one way to do it in general (for the scaled down example):
for other sizes change the 4 to a 32 or whatever.
在此之前的答案都没有涵盖合并和拆分数字。分裂和合并一样是必要的。
None of the answers before this cover both merging and splitting the numbers. Splitting can be as much a necessity as merging.